题解 | #明明的随机数#

在字符串中找出连续最长的数字串

http://www.nowcoder.com/practice/2c81f88ecd5a4cc395b5308a99afbbec

滑动窗口

1.先找到第一个为数字的值 标记为left,right=left 2.从left开始找第一个不是数字的值,标记为right,更新max 3.不断循环此过程

function isNumber(char) {
    return /\d/.test(char)
}

function getLongest(str) {
    const len = str.length;
    let left = 0;
    let right = 0;
    let max = 0;
    let ret = []
    while (left < len) {
        if (!isNumber(str[left])) {
            left++;
            continue
        }
        right = left
        while (right < len) {
            if (isNumber(str[right])) {
                right++;
                continue
            }
            break;
        }
        if (max < right - left) {
            ret = [[left, right]]
            max = right - left
        } else if (max === right - left) {
            ret.push([left, right])
        }
        left = right
    }
    let retStr = ''
    ret.forEach(item => {
        retStr += str.slice(item[0], item[1])
    })
    retStr += ',' + max
    console.log(retStr)
}

let str = ''
while(str = readline()){
    getLongest(str)
}
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务