js实现统计字符算法

本人大三了,自学前端已经两年多了,感觉自己的js还是很垃圾,为了提高自己,最近都在牛客网https://www.nowcoder.com用js OJ题目,今天就来实现一些冲击字符的算法这道题目
时间限制:1秒 空间限制:32768K 热度指数:12580
题目:给定一个英文字符串,请写一段代码找出这个字符串中首先出现三次的那个英文字符。
输入描述:
输入数据一个字符串,包括字母,数字等。
输出描述:
输出首先出现三次的那个英文字符
示例1
输入
Have you ever gone shopping and
输出
e

首先我们先来实现一下:统计一段字符串出现每个字母的数量,并输出来
我的思路是这样子的:先定义一个对象var hash = {},遍历这段字符串,如果hash没有字母就添加在hash里面,有就++
var str = "i love you xie hai tao"
function count(str) {
if(!str){
return ''
}
var hash = {};
for(var i=0,len = str.length;i if(/[^A-Za-z]/.test(str[i])){ // 这里是为了不统计空格,所以要用正则表达式来去掉空格的匹配
continue;
}
if(!hash[str[i]]){
hash[str[i]] = 1;
}else{
hash[str[i]]++;
}
}
return hash;
}
结果{ i: 3, l: 1, o: 3, v: 1, e: 2, y: 1, u: 1, x: 1, h: 1, a: 2, t: 1 }

得到这样子的结果就好办了
function count(str) {
if(!str){
return ''
}
var hash = {};
var index = str[0]; // 定义字段串的第一个字母
var temp = 1 // 标志位2
for(var i=0,len = str.length;i if(/[^A-Za-z]/.test(str[i])){
continue;
}
if(!hash[str[i]]){
hash[str[i]] = 1;
}else{
hash[str[i]]++;
}
if(hash[str[i]]>temp){ // 如果hash里面的字面的数量大于标志位的话,就要把index = str[i]
index = str[i];
temp = hash[index];
if(temp==3){
return index;
}
}
}
return '';
}

你可能感兴趣的:(js实现统计字符算法)