查找字符串中出现最多的字符

方法一:利用js的split和join方法

 1 function foo(str){
 2     var max = 0;
 3     var char = []; // 存放出现次数最多的字符
 4     while(str){
 5         var head = str.charAt(0);
 6         var arr = str.split(head);
 7         var num = str.length - arr.join('').length;
 8         if(num > max){
 9             max = num;
10             char.length = 0;
11             char.push(head);
12         }else if(num === max){
13             char.push(head);
14         }
15         str = arr.join('');
16     }
17     return {maxNum:max,chars:char};
18 
19 }

方法二:此处要用对象key查找而不是用下标遍历,前者时间是1后者是n

 1 function foo(str){
 2     let result = [];
 3     for(let i = 0; i < str.length; i++){
 4         if(result[str[i]]){
 5             result[str[i]] += 1;
 6         }else{
 7             result.push(str[i]);
 8             result[str[i]] = 1;
 9         }
10     }
11 
12     let max = 0;
13     let char = [];
14     for(let key in result){
15         if(result[key] > max){
16             char.length = 0;
17             max = result[key];
18             char.push(key);
19         }else if(result[key] === max){
20             char.push(key);
21         }
22     }
23 
24     retrun {maxNum:max,chars:char};
25 
26 }

 

转载于:https://www.cnblogs.com/171220-barney/p/8869685.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值