
-Code
import java.util.*;
public class LeetCode819 {
// Most Common Word
public String mostCommonWord(String paragraph, String[] banned) {
// 소문자로 변환 후 특수 문자 제거 및 split
String[] convParagraph = paragraph
.toLowerCase().replaceAll("[^a-z]", "").split("\\s+");
// 금지 단어를 빠르게 차지 위한 set 셋팅
Set<String> banSet = new HashSet<>();
for (String banWord : banned) banSet.add(banWord);
// 문자의 갯수를 저장하기 위한 map
Map<String, Integer> wordCntMap = new HashMap<>();
// 각 단어를 검사
for (String word : convParagraph) {
// 금지 단어 넘어가기
if (banSet.contains(word)) continue;
// 값이 있으면 +1 없으면 1로 넣기
wordCntMap.put(word, wordCntMap.getOrDefault(word, 0) + 1);
}
// 최대 출현 단어 찾기
String answer = "";
int maxCnt = 0;
for (String word : wordCntMap.keySet()) {
if (maxCnt < wordCntMap.get(word)) {
maxCnt = wordCntMap.get(word);
answer = word;
}
}
return answer;
}
}
처음에는 다른 방식으로 정규식을 만들려고 하다가 틀려서 해당 부분은 검색을 참고했고, 그러면서 replaceAll을 하는데 공백으로 인해서 ""로 해서 분리가 안되어 " "로 변경을 우선하고 길이에 상관없이 공백에 따라 분리하도록 하여 해결했습니다.
'알고리즘 문제 > Java' 카테고리의 다른 글
| [LeetCode/Java] Word Pattern (0) | 2026.07.05 |
|---|---|
| [LeetCode/Java] Number of Lines To Write String (0) | 2026.07.04 |
| [LeetCode/Java] Defanging an IP Address (0) | 2026.07.02 |
| [LeetCode/Java] Rotate Strin (0) | 2026.07.01 |
| [LeetCode/Java] Reverse Words in a String III (0) | 2026.06.30 |