1. 常规思路
遍历一次,和之前的数字字符串比较长度,找到最长的
import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()){ String input = sc.nextLine(); new Main().getLongestNumString(input); } } public void getLongestNumString(String str) { char[] arr = str.toCharArray(); StringBuilder tmp = new StringBuilder(); String ret = ""; List<String> list = new ArrayList<>(); boolean isConsecutive = false; for (char ch : arr) { if (Character.isDigit(ch)) { if (!isConsecutive) { tmp = new StringBuilder(); } tmp.append(ch); isConsecutive = true; if (ret.length() < tmp.toString().length()) { ret = tmp.toString(); list.clear(); list.add(ret); } else if (ret.length() == tmp.toString().length()) { list.add(tmp.toString()); } } else { isConsecutive = false; } } for (String string : list) { System.out.print(string); } System.out.print(","+ret.length()); System.out.println(); } }
2. 其他思路
来源:https://www.nowcoder.com/questionTerminal/2c81f88ecd5a4cc395b5308a99afbbec?f=discussion 哎呀哎呀123 的回答
将所有非数字的字符转换成一个字母,然后按照这个字母进行分隔,最后找到最长的数字串。
原文:https://www.cnblogs.com/ainsliaea/p/11407736.html