比较每一个数字字串,只要长度大于当前的最大长度max,都将子串存到list中,所以此时list中的并不全是长度最长的子串,只要在输出时添加判断条件(length==max)即可筛选输出所有的最长子串。
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while(in.hasNextLine()){ String s = in.nextLine(); int max = 0; // 最长长度 ArrayList<String> list = new ArrayList(); // 存放数字字串 for(int i=0;i<s.length();i++){ int sum = 0, k = i; while(i<s.length() && s.charAt(i)>='0' && s.charAt(i)<='9'){ sum++; i++; } if(sum >= max){ max = sum; list.add(s.substring(k,i)); // 存放数字字串,里面并不全是长度最长的字串 } } for(int i=0;i<list.size();i++){ if(list.get(i).length() == max){ // 输出所有的最长字串,长度不等于max的子串不输出 System.out.print(list.get(i)); } } System.out.println(","+max); } } }