美文网首页
2018-11-22 返回字符串中重复数量最多字符的数量

2018-11-22 返回字符串中重复数量最多字符的数量

作者: 1ab61d9c491d | 来源:发表于2018-11-22 20:40 被阅读0次

递归:

// 声明字符串

var strings = 'sdfdasmfadsfjkldasfjdaisfjiodasfjkdsafzxcvozjxalk'

//  定义一个存放返回最终结果的对象

var result = {name:'', length:0}

var str, length;        // 每次递归时,用到的变量,当前字符和重复数量

(function(strings){

    if(!strings){         // 7. 如果字符串为空,return

        return 

    }

    str = strings[0];            // 1. 取字符串第一个字符

    length = strings.length;    // 2. 取当前字符串的总长度,默认为原始长度

    strings = strings.replace(new RegExp(str,'g'), '')    // 3. 把字符串中所有匹配的第一个字符替换为空

    length = length - strings.length    // 4. 取到第一个字符串重复数量

    if(length > result.length){     // 5. 如果 当前字符重复数量 大于 之前取到的最大重复数量,设置result

    result.name = str;

    result.length = length

    } 

    arguments.callee(strings)    // 6. 递归操作       关于arguments.callee()

})(strings)

console.log(result)    // {name: "s", length: 7}

循环:

function getRepeatObj(str){
    var obj = {name: '', len:0}
    var arr = str.split('').sort()

    for(var i in arr){
        var curlen = arr.lastIndexOf(arr[i]) - arr.indexOf(arr[i]) + 1
        if(curlen > obj.len){
            obj.len = curlen
            obj.name = arr[i]
        }
    }

    return obj
}

getRepeatObj('abcdb')    // {name:'b', len: 2}

相关文章

网友评论

      本文标题:2018-11-22 返回字符串中重复数量最多字符的数量

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