js小题狂练(3)-一个字符串中出现次数最多的字符

xiaoxiao2021-02-28  13

这个题还是挺常见的,做C++的题中算是很基础的题了,js的话略现不同,要么用自己的小hash要么用排序和js的函数

法一:小hash版,直接记录每个字符的出现次数保存到数组里面

function timestset(str){ var hash={}; for(var i=0;i<str.length;i++) { if(!hash[str[i]]) hash[str[i]]=1; else hash[str[i]]++; } var maxn=-1; var res; for(var i in hash) if(hash[i]>maxn){ maxn=hash[i]; res=i; } //console.log("出现次数最多的字母是"+res+"出现了"+maxn+"次"); return maxn; }

法二:先进行排序,每个单独字母的尾位置-头位置

function timestset(str){ var res; var maxn=-1; str=[...str]; str.sort(); str=str.join(""); for(var i=0;i<str.length-1;i++) { if(str[i]==str[i+1]) continue; if(str.lastIndexOf(str[i])-str.indexOf(str[i])+1>maxn) { res=str[i]; maxn=str.lastIndexOf(str[i])-str.indexOf(str[i])+1; } } //console.log("出现次数最多的字母是"+res+"出现了"+maxn+"次"); return maxn; }

测试:

var str = 'asdfssaaasasasasaa'; timestset( str); PS:其实我们在计算出了maxn后,其实应该代回到数组数组看看哪些字母是最大值(因为最大值可以并列),这里就忽略了这一步。
转载请注明原文地址: https://www.6miu.com/read-1900137.html

最新回复(0)