eg:
一个字符串"1 4 2 3 5",求最长递增子串。
结果为"1 2 3 5"最大递增子串的长度为4
可以采用动态规划的方法来解决这个问题:
我们可以把原问题进行分解,分别求出第1个位置上的递增子串的长度,第2个位置上的xx长度.....第n个位置上的xx长度。。。
不妨设置一个数组longest[len]来存储1~n个位置上递增子串的长度,然后在数组中找出最大的那个数,就是最递增子串的长度
表达式为: longest[j] = max{longest[i] + 1,longest[j]}
下面贴出实现的代码:
package ggg;
public class Test {
public static int getCount(char[] a,int len){
int[] longest=new int[len];
for(int i=0;i<len;i++){
longest[i]=1;
}
for(int j=1;j<len;j++){
for(int i=0;i<j;i++){
if(a[j]>a[i]&&longest[j]<longest[i]+1){
longest[j]=longest[i]+1;
}
}
}
int max=0;
for(int j=0;j<len;j++){
if(longest[j]>max){
max=longest[j];
}
}
return max;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String s="1 4 2 3 5";
String s1=s.replaceAll(" ", "");
char[] c=s1.toCharArray();
System.out.println(getCount(c,c.length));
}
}