当前位置:网站首页>查找字符串中重复次数最多的元素

查找字符串中重复次数最多的元素

2022-06-29 08:26:00 swag_特约男演员

思路(能力有限,比较菜,望多指导)

循环,第一重循环直接记count = 1,然后第二重循环在当前元素的后面找(注意:这里做了处理,不遍历重复的元素,如第一重循环的array[0]元素为s,第一重循环的array[5]元素仍为s则不进行下面的操作,因为已经遍历过了。),找到就count1,把每一个元素和它重复的次数计入对象。

然后,遍历存放字符重复次数的对象,找出字符重复次数的最大值,再遍历一遍找到重复次数等于最大值的元素取出来。(这里不合并操作是因为,s重复次数为4d重复次数也为4,这样会漏掉一个)

纯循环方法,复杂度飙升

在这里插入图片描述

借用正则表达式,复杂度也不低

在这里插入图片描述

源码

// 找出字符串中重复最多的字符并输出重复次数 
function getMaxRepeatStr (String) {
    
    let checked = [] // 检查过的元素
    var stringArray = String.split('')
    let obj = {
    } // 存放字符重复次数的对象

    for (var i = 0; i < stringArray.length; i++) {
    
        if (!checked.includes(stringArray[i])) {
     // 没检查过才进行二次循环
            let count = 1 // 重复次数

            obj[stringArray[i]] = count

            for (var j = i + 1; j < stringArray.length; j++) {
    
                if (stringArray[i] === stringArray[j]) {
    
                    count++
                    obj[stringArray[i]] = count
                } else {
    
                    continue
                }
            }

            checked.push(stringArray[i]) // 标记已检查
        } else {
    
            continue
        }
    }

    // 找出重复次数最大值
    let maxVal = 0
    Object.keys(obj).forEach(element => {
    
        if (obj[element] > maxVal) {
    
            maxVal = obj[element]
        }
    })

    // 取得重复次数最多的字符
    let result = {
    }
    Object.keys(obj).forEach(element => {
    
        if (obj[element] === maxVal) {
    
            result[element] = obj[element]
        }
    })

    console.log('字符串中重复次数最多的字符为:', result)
}

function getMaxRepeatStr (String) {
    
    let checked = [] // 检查过的元素
    var stringArray = String.split('')
    let obj = {
    } // 存放字符重复次数的对象

    for (var i = 0; i < stringArray.length; i++) {
    
        if (!checked.includes(stringArray[i])) {
     // 没检查过才进行处理
            let reg = new RegExp(stringArray[i], "ig");
            let count = String.match(reg).length;
            checked.push(stringArray[i]) // 标记已检查
            obj[stringArray[i]] = count
        } else {
    
            continue
        }
    }

    // 找出重复次数最大值
    let maxVal = 0
    Object.keys(obj).forEach(element => {
    
        if (obj[element] > maxVal) {
    
            maxVal = obj[element]
        }
    })

    // 取得重复次数最多的字符
    let result = {
    }
    Object.keys(obj).forEach(element => {
    
        if (obj[element] === maxVal) {
    
            result[element] = obj[element]
        }
    })

    console.log('字符串中重复次数最多的字符为:', result)
}
getMaxRepeatStr('sdfjhkjhkjlsdsdfsd')
getMaxRepeatStr('dfghjjjklmnssss')
原网站

版权声明
本文为[swag_特约男演员]所创,转载请带上原文链接,感谢
https://blog.csdn.net/usernotdefined/article/details/115300844