最近看到一个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);
}
}
}
转载请注明原文地址: https://ju.6miu.com/read-663626.html