*22.1(最大连续递增的有序子字符串)编写一个Java程序,提示用户输入一个字符串,然后显示最大连续 递增的有序子字符串。分析你的程序的时间复杂度。下面是一个运行示例:
时间: 2024-10-27 07:08:43 浏览: 7
CSharp to Java Converter 22.1.19(2022年最新版)
5星 · 资源好评率100%
当需要解决这个问题时,我们可以使用滑动窗口算法(Sliding Window Algorithm),它是一种常用于处理数组、列表等数据结构的有效技术。以下是使用Java编写的简单解决方案:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String input = scanner.nextLine();
int maxLength = findMaxIncreasingSubsequence(input);
System.out.println("最大连续递增的有序子字符串长度为: " + maxLength);
// 如果你想找到具体的子串,可以进一步遍历并记录下每个子序列,这里为了简洁只打印长度
}
private static int findMaxIncreasingSubsequence(String str) {
int length = str.length();
if (length <= 1) {
return length;
}
int[] dp = new int[length];
dp[0] = 1; // 初始化第一个字符的子序列长度为1
for (int i = 1; i < length; i++) {
if (str.charAt(i) > str.charAt(i - 1)) {
dp[i] = dp[i - 1] + 1; // 如果当前字符大于前一个,增加长度
} else {
dp[i] = 1; // 否则从头开始计算新的子序列长度
}
}
int maxLength = 0;
for (int num : dp) {
maxLength = Math.max(maxLength, num);
}
return maxLength;
}
}
阅读全文