给定一个段落paragraph 和一个忽略列表 banned。返回不在忽略范围内且出现次数最多的。
单词不含标点符号,大小写忽略
示例:
输入:
paragraph = "Bob hit a ball, the hit BALL flew far after it was hit."
banned = ["hit","a"]
输出: "ball"
解答一:用的是最土的方法,把字符串转成数组,循环数组用列表把单词出现的次数相加,最后再比相加的次数,跳过忽略列表内的,返回次数最多单词。
/**
* @param date 2018/11/10 下午
*/
var mostCommonWord = function(paragraph, banned) {
//空格替换各种标点符号,字符串转成小写,字符串转成数组
var p1=paragraph.replace(/[\W\s_]/g," ")
p1=p1.toLowerCase()
p1=p1.split(" ")
var arr = p1.sort();
var obj = {}
for(var i=0;i<p1.length;i++){
if(p1[i].length>0){
if(obj[arr[i]]){
obj[arr[i]]+=obj[arr[i]];
}else{
obj[arr[i]]=1;
}
}
}
var max='';
for(var i in obj){
//做判断。赋一个值给max,新值大于max时再次赋值,忽略banned。
if(banned.indexOf(i)<0){
if(max.length<1){
max=i;
}
if(obj[i]>obj[max]){
max=i;
}
}
}
return max;
};
/*
paragraph = "abc abc? abcd the jeff!"
banned = ["abc","abcd","jeff"];
var z = mostCommonWord(paragraph,banned);
console.log(z);
*/