最长连续降序数字子串

mac2024-09-27  50

import java.util.ArrayList; import java.util.List; public class LongestConsecutiveDescendingNumberSubstring { public static void main(String[] args) { System.out.println(longestConsecutiveDescendingNumberSubstring("s")); // [] System.out.println(longestConsecutiveDescendingNumberSubstring("3")); // [3] System.out.println(longestConsecutiveDescendingNumberSubstring("3s7")); // [3, 7] System.out.println(longestConsecutiveDescendingNumberSubstring("421")); // [21] System.out.println(longestConsecutiveDescendingNumberSubstring("5a321")); // [321] System.out.println(longestConsecutiveDescendingNumberSubstring("4433210")); // [3210] System.out.println(longestConsecutiveDescendingNumberSubstring("44332103210"));// [3210, 3210] } public static List<String> longestConsecutiveDescendingNumberSubstring(String s) { List<String> list = new ArrayList<String>(); if (s == null || s.length() == 0) { return list; } int count = 1, max = 1, ptr = 1; while (ptr < s.length()) { char pre = s.charAt(ptr - 1), cur = s.charAt(ptr); if (Character.isDigit(pre) && Character.isDigit(cur) && pre - 1 == cur) { count++; max = Math.max(count, max); } else { count = 1; } ptr++; } if (max == 1) { for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (Character.isDigit(c)) { list.add(String.valueOf(c)); } } return list; } count = 1; ptr = 1; List<Integer> indexList = new ArrayList<Integer>(); while (ptr < s.length()) { char pre = s.charAt(ptr - 1), cur = s.charAt(ptr); if (Character.isDigit(pre) && Character.isDigit(cur) && pre - 1 == cur) { count++; if (count == max) { indexList.add(ptr - max + 1); } } else { count = 1; } ptr++; } for (int i = 0; i < indexList.size(); i++) { int begin = indexList.get(i); list.add(s.substring(begin, begin + max)); } return list; } }

 

最新回复(0)