此博客链接:
在字符串中找出连续最长的数字串
题目链接: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); } } }