最近看到一个Java笔试题:求最长递增子串
题目:给定一个只包含小写字母(a-z)的字符串。找出其中最长递增子串(子串是指连续的子串)。
例如:给定ababc输出abc
public static void main(String [] args){
String str="abcefghjklmn";
System.out.println("str:"+getMaxSubStr(str));
}
static String s="";
public static String getMaxSubStr(String str){
String s="";
return getStr(str,0,0,1);
}
/**
*
* @param str 待查找字符串
* @param start 标记子串初始位置
* @param sf 标记两字符比较的第一个字符
* @param end 标记两字符比较的第二个字符
* @return 返回最长字符串
*/
public static String getStr(String str,int start,int sf,int end){
if (str.length()<2){
return str;
}
String s1="";
if (str.charAt(end)-str.charAt(sf)==1){
sf++;
end++;
if (end<=str.length()-1){
return getStr(str,start,sf,end);
}else {
s1=str.substring(start,end);
System.out.print("s1:"+s1);
System.out.println(" s:"+s);
if (s1.length()>s.length()){
s=s1;
}
return s;
}
}else {
s1=str.substring(start,end);
System.out.print("s1:"+s1);
System.out.println(" s:"+s);
if (s1.length()>s.length()){
s=s1;
}
if (end==str.length()-1){
return s;
}else {
return getStr(str,end,end,end+1);
}
}
}