题解 | #在字符串中找出连续最长的数字串#
在字符串中找出连续最长的数字串
https://www.nowcoder.com/practice/2c81f88ecd5a4cc395b5308a99afbbec
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNextLine()) { // 注意 while 处理多个 case String a = in.nextLine(); List<String> longestSubstrings = findLongestNumericSubstrings(a); if (longestSubstrings.isEmpty()) { System.out.println("没有数字子串"); } else { int maxLength = longestSubstrings.get(0).length(); for (String substring : longestSubstrings) { if (substring.length() == maxLength) { System.out.print(substring); } } System.out.println("," + maxLength); } } } private static List<String> findLongestNumericSubstrings(String input) { List<String> substrings = new ArrayList<>(); int maxLength = 0; int start = -1; for (int i = 0; i < input.length(); i++) { char ch = input.charAt(i); if (Character.isDigit(ch)) { if (start == -1) { start = i; } } else { if (start != -1) { String substring = input.substring(start, i); if (substring.length() > maxLength) { maxLength = substring.length(); substrings.clear(); substrings.add(substring); } else if (substring.length() == maxLength) { substrings.add(substring); } start = -1; } } } // Check for the last substring if it ends with a digit if (start != -1) { String substring = input.substring(start); if (substring.length() > maxLength) { maxLength = substring.length(); substrings.clear(); substrings.add(substring); } else if (substring.length() == maxLength) { substrings.add(substring); } } return substrings; } }