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

此博客链接:

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

题目链接:https://www.nowcoder.com/practice/2c81f88ecd5a4cc395b5308a99afbbec?tpId=37

题目

输出描述:

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

示例1

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

题解

 初步想法是,先找到字符串中数字字符串,用数组保存下来,只要后一个数字字符串长度不小于前一个字符串的长度,就保存到数组中,最后比较数组中的元素,输出较大的数字字符串。但是这个想法的难点在于,如何能在字符串中找到数字,并且还需要先把所有的数字保存下来,然后在做比较。看到一个很好的理解,就是把不是数组的字符全变成同一个字符,然后用这个字符进行分割,就能把所有的数字分割出啦,找出数字中最长的字符串,最后输出等于最长字符串的数字字符即可。这里需要注意:在输出相同长度的数字字符串时,不要换行,最后把长度也输出。

代码

import java.util.*;
public class Main{
    public static void main(String args[]){
      
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            String str="";
            String temp=sc.nextLine();
            for(char c:temp.toCharArray()){
                if(c>='0' && c<='9'){
                    str+=c;
                }
                else{
                    str+='a';
                }
            }
            String res[] =str.split("a");
            int count=0;//记录最长的数字长度
                for(int i=0;i<res.length;i++)
                {
                    int len=res[i].length();
                    if(len>=count)
                    {
                        count=len;
                    }
                }
            for(String st:res)
                {
                    int len=st.length();
                    if(len==count)
                    {
                        System.out.print(st);
                    }
                }
                System.out.println(","+count); 
        }
        
    }
}

结果

出来混总是要还的
原文地址:https://www.cnblogs.com/ping2yingshi/p/15241234.html