思路
难点1:如何将非空格、非字母区分出来→全部替换为空格,利用正则表达式
难点2:如何找到出现次数最多,且不在banned中→先找到不在set中的单词,然后再判断其出现的次数是否是最多的
public static String mostCommonWord(String paragraph, String[] banned) {
Set<String> set = new HashSet<String>();
Map<String, Integer> map = new HashMap<String, Integer>();
int maxFrq = 0;
String maxWord = null;
for (String s : banned)
set.add(s);
paragraph = paragraph.toLowerCase().replaceAll("[^a-z]", " ");
String[] words = paragraph.split("\\s+");
for (String w : words)
{
if (!set.contains(w))
{
int cnt = map.getOrDefault(w, 0) + 1;
map.put(w, cnt);
if (maxFrq < cnt)
{
maxFrq = cnt;
maxWord = w;
}
}
}
return maxWord;
}