要求:
输入一个字符串,在一行内输出其最长的数字子串。若有多个最长的数字子串,则将它们全部输出(按原字符串的相对位置)。
示例:
输入:abcd12345ed125ss123456789
输出:123456789
思路:
字符串中非数字元素替换为字母a,以a为间隔将其分割为数组,数组中最长的元素即为所求。
实现:
import java.util.Scanner;
public class FindNum {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String str1 = "";
String str = sc.nextLine();
for (char ch : str.toCharArray()) {
if (ch >= '0' && ch <= '9') {
str1 += ch;
} else {
str1 += "a";
}
}
String[] str2 = str1.split("a");
int max = 0;//记录最长的连续数字串的长度
for (int i = 0; i < str2.length; i++) {
max = str2[i].length() > max ? str2[i].length() : max;
}
for (int i = 0; i < str2.length; i++) {
if (str2[i].length() == max)
System.out.print(str2[i]);
}
}
}
}
执行结果: