美文网首页
2020-09-05求字符串连续出现最多的字符及其个数

2020-09-05求字符串连续出现最多的字符及其个数

作者: 再见地平线_e930 | 来源:发表于2020-09-05 18:30 被阅读0次

题目:给出一个字符串,该字符串由若干个字符组成,求出现次数最多的字符串及其个数

例如:
输入:'abcdefag';
输出:['a:2'];
----------------
输入:'aabbccdbef';
输出:['b:3'];
----------------
输入:'aaabcccde';
输出:['a:3', 'c:3'];

思路:
1.把字符串转换为数组
2.记录每个字符在字符串中出现的次数(保存在对象中)
3.找出字符出现的最大次数(maxNum)
4.遍历对象,如果该字符出现的次数大于等于 maxNum,则存入结果 result数组 中,最终返回结果 result数组

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        const str = 'abbkejsbcccwqaa';
        function findLongest(str) {
            const arr = str.split('');

            let obj = {};
            let result = [];

            let maxNum = 1;

            const singleKeys = Array.from(new Set(arr));

            for(let i=0; i<singleKeys.length; i++) {
                obj[singleKeys[i]] = 0; // 建立与字符元素对应的对象
            }

            for(let i=0; i<arr.length; i++) { // 获得每个字符出现的次数
                for(let j=0; j<singleKeys.length; j++) {
                    if(arr[i] === singleKeys[j]) {
                        obj[arr[i]] = obj[arr[i]] + 1;
                        break;
                    }
                }
            }

            for(let i=0; i<singleKeys.length; i++) { //得到字符出现的最大次数
                if(obj[singleKeys[i]] >= maxNum) {
                    maxNum = obj[singleKeys[i]];
                }
            }

            for(let i=0; i<singleKeys.length; i++) { //遍历对象,找出出现次数大于等于 maxNum 的字符,存入 result 数组中
                if(obj[singleKeys[i]] >= maxNum) {
                    result.push(`${singleKeys[i]}:${obj[singleKeys[i]]}`)
                }
            }
            return result;
        }
        console.log(findLongest(str));
    </script>
</body>
</html>

结果:


相关文章

网友评论

      本文标题:2020-09-05求字符串连续出现最多的字符及其个数

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