这个题还是挺常见的,做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);