给定一个段落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);
*/
本文介绍了一种使用JavaScript实现的算法,该算法能从给定的段落中找出出现频率最高的单词,同时排除指定的忽略列表中的单词。通过将段落转换为小写并去除标点符号,算法将文本分解为单词,统计每个单词的出现次数,并最终确定最常见的单词。
214

被折叠的 条评论
为什么被折叠?



