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;
}
}