컴퓨터/LeetCode
LeetCode 819 Most Common Word Easy [Java]
이상한 나그네
2023. 12. 28. 20:58
문제: 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 값을 순차적으로 접근하여 가장 많이 등장하는 단어를 찾아서 반환합니다.