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

描述

输入一个字符串,返回其最长的数字子串,以及其长度。若有多个最长的数字子串,则将它们全部输出(按原字符串的相对位置)
本题含有多组样例输入。

 

输入描述:

输入一个字符串。

输出描述:

输出字符串中最长的数字字符串和它的长度,中间用逗号间隔。如果有相同长度的串,则要一块儿输出(中间不要输出空格)。

示例1

输入:
abcd12345ed125ss123058789
a8a72a6a5yy98y65ee1r2
输出:
123058789,9
729865,2

 

function fn(str){
    let dp = new Array(str.length+1)//dp数组代表第i个字符为数字结尾的最长数字串长度
    dp[0] = 0;
    for(let i=1;i<=str.length;i++){
        if(/\d/.test(str[i-1])){
            dp[i] = dp[i-1]+1;
        }else{
            dp[i] = 0;
        }
    }
    let max = Math.max.apply(null, dp);
    let res = ''
    for(let i=1;i<dp.length;i++){
        if(dp[i] === max){
            res+=str.substr(i-dp[i], dp[i])
        }
    }
    console.log(res+','+max)
}
let line;
while(line=readline())    fn(line);

 

posted @ 2021-09-11 09:30  misaki_ylz  阅读(238)  评论(0)    收藏  举报