一、题目描述
给定一个字符串(只包含纯大写字母或者小写字母),在这个字符串中找出最长的升序子序列。
例如:
输入:abcdeababca
输出:abcde
二、解法
这个思路是面试官给的:遍历这个字符串,先把所有的升序子字符串放进链表中,最后遍历链表,找出最小的。
三、代码
public class MaxSort {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String str=sc.next();
//ret用来保存当前最长的长度为多少
int ret=0;
String str1="";
List<String> list1=new LinkedList<>();
for(int i=0;i<str.length()-1;i++){
if(str.charAt(i)<str.charAt(i+1)){
str1+=str.charAt(i);
}else{
str1+=str.charAt(i);
list1.add(str1);
str1="";
}
}
//现在说明了i走到了最后一个位置
//i==str.length()-1
if(str.charAt(str.length()-1)>str.charAt(str.length()-2)){
str1+=str.charAt(str.length()-1);
list1.add(str1);
}else{
list1.add(String.valueOf(str.charAt(str.length()-1)));
}
String maxString="";
for(int i=0;i<list1.size();i++){
String s=list1.get(i);
if(s.length()>ret){
maxString=s;
ret=s.length();
}
}
System.out.println(maxString);
}
}
四、运行结果