문제: https://leetcode.com/problems/most-common-word
1. 코드
class Solution {
public String mostCommonWord(String paragraph, String[] banned) {
paragraph = paragraph.toLowerCase().replaceAll("[^a-z]", " ");
Map<String, Integer> hash = new HashMap<>();
for(String s : paragraph.split(" ")) {
if(s.isBlank()) continue;
if(hash.get(s) == null)
hash.put(s, 1);
else
hash.put(s, hash.get(s) + 1);
}
for(String ban : banned)
hash.remove(ban);
String answer = "";
int max = 0;
for(String key : hash.keySet()) {
if(max < hash.get(key)) {
max = hash.get(key);
answer = key;
}
}
return answer;
}
}
2. 설명
class Solution {
public String mostCommonWord(String paragraph, String[] banned) {
paragraph = paragraph.toLowerCase().replaceAll("[^a-z]", " ");
Map<String, Integer> hash = new HashMap<>();
for(String s : paragraph.split(" ")) {
if(s.isBlank()) continue;
if(hash.get(s) == null)
hash.put(s, 1);
else
hash.put(s, hash.get(s) + 1);
}
먼저 주어진 문자열을 소문자로 통일한 뒤 소문자가 아닌 것은 공백으로 전부 바꿔주며 for-each문을 통해서 공백을 기준으로 문자열을 분리한 것을 s에 저장하는데 공백이 아닌 문자 s를 HashMap을 이용하여 null이라면 Integer값을 1을 아니라면 누적된 값을 put해준다.
for(String ban : banned)
hash.remove(ban);
금지된 단어는 HashMap에서 제거한다.
String answer = "";
int max = 0;
for(String key : hash.keySet()) {
if(max < hash.get(key)) {
max = hash.get(key);
answer = key;
}
}
return answer;
}
}
for-each문을 통해서 HashMap 값을 순차적으로 접근하여 가장 많이 등장하는 단어를 찾아서 반환합니다.
'컴퓨터 > LeetCode' 카테고리의 다른 글
LeetCode 5 Longest Palindromic Substring Medium [Java] (0) | 2023.12.30 |
---|---|
LeetCode 49 Group Anagrams Medium [Java] (0) | 2023.12.29 |
LeetCode 937 Reorder Data in Log File Medium [Java] (0) | 2023.12.27 |
LeetCode 344 Reverse String Easy [Java] (0) | 2023.12.25 |
LeetCode 125 valid-palindrome Easy [Java] (1) | 2023.12.24 |