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存储它们的坐标,从最后一个最大字符的下一位再开始遍历。