1、使用正则切割字符串
2、使用栈来缓存最长数字字符串下标
import java.util.*; public class Main{ public static void main(String [] args){ getStringLen(); } public static void getStringLen(){ Scanner scan = new Scanner(System.in); while(scan.hasNext()){ String [] input = scan.nextLine().split("[^0-9]"); if(input.length == 0){ System.out.println(); continue; } if(input.length == 1){ System.out.println(input[0] + ","+ input[0].length()); continue; } Stack<Integer> stack = new Stack(); stack.push(input[0].length()); for(int i =input.length-1; i>=0;i--){ if(input[stack.peek()].length() == input[i].length()){ stack.push(i); continue; } if(input[stack.peek()].length() < input[i].length()){ stack.clear(); stack.push(i); continue; } } int len = input[stack.peek()].length(); while(!stack.empty()){ System.out.print(input[stack.pop()]); } System.out.println(","+len); } } }