java 给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。
给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。
输入:nums = [1,3,5,4,7]
输出:3
解释:最长连续递增序列是 [1,3,5], 长度为3。
public class 最长连续递增序列 { public static void main(String[] args) { int[] a = {4, 3, 1, 5, 7, 9}; System.out.println(findLengthOfLCIS(a)); } public static int findLengthOfLCIS(int[] nums) { if (nums.length == 0) return 0; int max = 0, num = 1; for (int i = 0; i < nums.length - 1; i++){ if (nums[i + 1] > nums[i]){ num++; }else { if (num > max) //比较谁是最长序列 max = num; num = 1; //重新计数 } } return Math.max(max, num); } }
给定一个字符串,求最大连续递增数字串(如ads3s456789DF3456d345AA中的456789)
public class 最长连续递增序列2 { public static void main(String[] args) { System.out.println(func("ads3s456789DF3456d345AA")); } public static int func(String s){ int num = 1, max = 0; for (int i = 0; i < s.length() - 1; i++){ if (Character.isDigit(s.charAt(i)) && Character.isDigit(s.charAt(i + 1))){ if (s.charAt(i + 1) > s.charAt(i)){ num++; } else { if (num > max) max = num; num = 1; } }else { if (num > max) max = num; num = 1; } } return max > num ? max : num; } }