问题描述:
读入一个字符串 str ,输出字符串 str 中的连续最长的数字串
输入描述:
1个测试输入包含 1 个测试用例,一个字符串 str ,长度不超过 255 。
输出描述:
在一行内输出 str 中里连续最长的数字串。
示例:
输入abcd12345ed125ss123456789
输出123456789
分析:
比较每个数字串的长度,找到最长的数字串,并将它最后一个数字在整个字符串中的下标记下,再根据下标去截取。
对这个题来说,定义三个变量max,count,end。在遍历字符串时count记录数字的个数,max中存放最长的字符串的长度,而end则存放的最长的字符串的最后一个数字在整个字符串中的地址(方便在截取字符串时找到相应的位置),当遍历完成后截取 [end - max(数字个数)+1 到 end +1 ) 的位置(substring() 截取时采用左闭右开,故end需要加一)。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
int max = 0;
int count = 0;
int end = 0;
for(int i = 0;i<str.length();i++){
if(str.charAt(i) >= '0' && str.charAt(i) <= '9'){
count ++;
if(max < count ){
max = count;
end = i;
}
}else{
count = 0;
}
}
System.out.println(str.substring(end-max+1,end+1));
}
}