如何找出字符串中出现最多的字符

案例

先找出字符串 ‘6285837234715320355294398’ 中出现次数最多的数字及次数,然后去重后并排序
要求:
1:找到出现最多的数字和出现的次数

2:去除字符串中重复的数字

3:对去重后的字符串排序

核心算法  
          利用charAt() 通过索引获取值 
          然后遍历这个字符串
          把每一个字符串都存储给对象  如果对象没有该属性就赋值1 ,如果有存在就+1,再有再+1
          最后遍历对象 得到最大值和该字符
          再利用冒泡排序对数组进行排序

代码

var str = '8587263747153203552943982';
        //先定义空对象 存储拆分后的字符
        var obj = {};
        // 先遍历字符串
        for (var i = 0; i < str.length; i++) {
            var chars = str.charAt(i);   //保存字符串里面每一个字符

            //核心算法  利用charAt() 通过索引获取值 
            // 然后遍历这个字符串
            // 把每一个字符串都存储给对象  如果对象没有该属性 就赋值1; 如果有 存在就+1
            // 然后遍历对象 得到最大值和该字符
            if (obj[chars]) {
                obj[chars]++;
            } else {
                obj[chars] = 1;
            }
        }
        var max = 0;  // 定义出现次数  用来找出次数最多的
        var arr = [];   // 定义空数组  将每个字符填入数组
        
        var name;    //用于最后接收出现次数最多的值
        // 先遍历对象   对象里面属性就是[k] 代表每一个字符
        for (var k in obj) {
            arr.push(k)
            if (obj[k] > max) {
                max = obj[k];
                name = k;
            }
        }
        console.log(max);  // 最多的次数
        console.log(name);  // 次数最多的值 注意此值有可能是之一 如果出现多个字符  且出现最多的时候次数一样 
        
        //定义一个数组  存储和出现次数最多一样的字符
        var arr1 = [];
        for (key in obj) {
            if (obj[key] == max) {
                arr1.push(key);
            }
        }
        console.log(arr1);  //所有次数最多的值 存到数组 
        console.log(arr);    // 原字符串里面去重后 存到数组

        //冒泡排序
            for (var i = 0; i < arr.length; i++) {
                for (var j = 0; j < arr.length - i; j++) {
                    var hm;
                    if (arr[i] > arr[i + 1]) {
                        hm = arr[i];
                        arr[i] = arr[i + 1];
                        arr[i + 1] = arr[i]
                    }
                }
            }
        
        console.log(arr);  // 冒泡排序后的数组
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值