给定一个段落 (paragraph) 和一个禁用单词列表 (banned)。返回出现次数最多,同时不在禁用列表中的单词。题目保证至少有一个词不在禁用列表中,而且答案唯一。
禁用列表中的单词用小写字母表示,不含标点符号。段落中的单词不区分大小写。答案都是小写字母。
class Solution {
public String mostCommonWord(String paragraph, String[] banned) {
Set<String> set = new HashSet<>(Arrays.asList(banned));
int start=0;
String res="";
int times=0;
set.add("");
paragraph += ".";
Map<String, Integer> map = new HashMap<>();
for(int i=0;i<paragraph.length();i++){
char A=paragraph.charAt(i);
if((A>='a')&&(A<='z')||(A>='A')&&(A<='Z')){
continue;
}
else{
String cur=paragraph.substring(start,i);
cur=cur.toLowerCase();
if(!set.contains(cur)){
map.put(cur,map.getOrDefault(cur,0)+1);
if(map.get(cur)>times){
times=map.get(cur);
res=cur;
}
}
start=i+1;
}
}
return res;
}
}