import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
String s = in.nextLine();
int index = -1;
String result = "";
List<Integer> list = new LinkedList<Integer>();
while(index<s.length()-1){
char max = 'a'-1;
for(int i = index+1;i<s.length();i++){
if(s.charAt(i)>max){
list.clear();
max = s.charAt(i);
list.add(i);
}else if(s.charAt(i)==max){
list.add(i);
}else{
}
}
int p = 0;
for(;p<list.size();p++){
result+=s.charAt(list.get(p));
}
index = list.get(p-1);
list.clear();
}
if(result.charAt(result.length()-1)==s.charAt(s.length()-1)) System.out.println(result);
else System.out.println(result+s.charAt(s.length()-1));
}
}
实际上就是一直找最大的字符,如果最大的字符有两个及以上,用list存储它们的坐标,从最后一个最大字符的下一位再开始遍历。

京公网安备 11010502036488号