https://leetcode.com/problems/most-common-word
class Solution {
public String mostCommonWord(String paragraph, String[] banned) {
if (paragraph == null || paragraph.isBlank()) {
return null;
}
// replace
String replaced = paragraph.replaceAll("[^A-Za-z]+", " ");
List<String> bannedList = Arrays.asList(banned);
return Arrays.stream(replaced.split(" "))
.map(String::toLowerCase)
.filter(Predicate.not(bannedList::contains))
.filter(Predicate.not(String::isBlank))
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
.entrySet()
.stream()
.max(Map.Entry.comparingByValue())
.map(Map.Entry::getKey)
.orElse(null);
}
}
혹은 정규식: (\\W+) 사용.
getOrDefault로 전개할 수도 있음.
'알고리즘 > Array' 카테고리의 다른 글
Longest Palindrome Substring (0) | 2023.10.01 |
---|---|
그룹 애너그램 (0) | 2023.09.29 |
로그 파일 정렬하기 (0) | 2023.09.28 |
부족한 금액 계산하기 (0) | 2021.08.09 |
일곱 난쟁이 (0) | 2021.07.14 |