美文网首页
查找字符串中出现最多的字符和个数

查找字符串中出现最多的字符和个数

作者: duJing | 来源:发表于2017-01-04 15:18 被阅读53次
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>查找字符串中出现最多的字符和个数</title>
    </head>
    <body>
    <script>
    /*
    * 问题描述:
    * 查找字符串中出现最多的字符和个数?
    * 例如:sdjksfssscfssdd -> 字符最多的是s,出现了7次
    * 要求:字符串 + 正则两种方法
    *
    * 解决思路:
    * 我们将字符串 sdjksfssscfssdd 表示为下面形式
    * {
    * s : [s,s,s...],
    * d : [d,d,d...],
    * ...
    * }
    * */

    var a = 'sdjksfssscfssdd';

    /*
    * 解法一:字符串方式
    * */
    (function (a) {
    var obj = {};
    var num = 0;
    var value = '';
    for (var i = 0; i < a.length; i++) {
    // 如果obj中不存在某个字符属性,就把它添加进去
    if (!obj[a[i]]) {
    obj[a[i]] = [];
    }
    // 把值一一填入到obj[a[i]]中
    obj[a[i]].push(a[i]);
    }
    // console.log(obj);
    // 找出最多项的那个
    for (var attr in obj) {
    if (num < obj[attr].length) {
    num = obj[attr].length;
    value = obj[attr][0];
    }
    }
    var res = '字符最多的是' + value + ',出现了' + num + '次';
    alert(res);
    })(a);


    /*
    * 解法二:正则方式
    *
    * 解决思路:先排序,再计算
    * 将 sdjksfssscfssdd 排序为下面的形式
    * ss..jj..ff..ss..
    * 然后找出出现最多的那个字符和数量
    * */

    /*(function (a) {
    var num = 0;
    var value = '';
    // 排序
    a = a.split('').sort().join('');
    // 计算
    // \1表示和(\w)相同,这里找出连续相同的字符串
    var re = /(\w)\1*!/g;
    a.replace(re, function ($0, $1) {
    if (num < $0.length) {
    num = $0.length;
    value = $1;
    }
    });
    var res = '字符最多的是' + value + ',出现了' + num + '次';
    alert(res);
    })(a);*/

    </script>
    </body>
    </html>

    相关文章

      网友评论

          本文标题:查找字符串中出现最多的字符和个数

          本文链接:https://www.haomeiwen.com/subject/dlgovttx.html