思路:
首先要先定义三个整型变量count,max,end,count记录数字串中数字的个数,max记录数字串的最大个数,end记录max对应的字符串中最后一个数字的下标。
然后,利用for循环遍历字符串,再利用str.charAt将字符串转成char型字符,因为每个字符都对应一个ASCII码,所以可以利用if语句将数字串筛选出来并计数,如果max<count更新max中的数据,然后将max对应的字符串中最后一个数字的下标赋值给end;如果ASCII不再'0'—'9'之中说明是不是数字,那么将计数器count清零重新开始计数。
最后利用substring截取max对应的数字串,其范围是end-max+1 —— end+1,(关于这个范围的确定可以举一个例子,比如:ab123,其中最长数字串是123,此时end==4,如果想知道数字串的开头,就要减掉数字串的 长度-1,因为end所处在数字串的结尾占了一个长度要减掉 即end-3-1)。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String str = sc.nextLine();
int count = 0;
int max = 0;
int end = 0;
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if(ch>='0'&&ch<='9'){
count++;
if(max<count){
max = count;
end = i;
}
}
else{
count = 0;
}
}
System.out.println(str.substring(end-max+1,end+1));//substring截取括号范围内的内容
}
}