这题使用了很多我之前不会使用的Java类和这些类的用法, 比如说: ArrayList类的contains()方法, 用来判断传入的元素在ArrayList对象中有没有, 有的话就返回true, 没有返回false. 还有静态类Collections, 这个类可以直接调用方法.Collections.sort()方法可以将传入的对象按照升序排列, Collections.reverse()方法可以将传入的对象内的元素翻转, 将两个方法连用可以实现对象的元素按照值的大小进行降序排列.
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ArrayList<Integer> alist = new ArrayList<Integer>(); String str = br.readLine(); for(int i=0; i<str.length(); i++) { if(!alist.contains(Integer.valueOf((str.charAt(i)+"")))) { // contains的作用是如果传入的值在alist中存在, 则返回true alist.add(Integer.valueOf(str.charAt(i)+"")); } } Collections.sort(alist); // 使用sort方法对alist列表进行升序处理 Collections.reverse(alist); // 使用reverse方法对alist列表进行翻转处理 // 通过上面两行代码, 实现了alist降序排列. System.out.print("int[] arr = new int[]{"); for (int i=0; i<alist.size(); i++) { if(i==0) { System.out.print(alist.get(i)); } else { System.out.print("," + alist.get(i)); } } System.out.println("};"); System.out.print("int[] index = new int[]{"); for(int i=0; i<str.length(); i++) { if( i==0) { System.out.print(alist.indexOf(Integer.valueOf(str.charAt(i)+""))); // indexOf得到元素的下标 } else { System.out.print("," + alist.indexOf(Integer.valueOf(str.charAt(i)+""))); } } System.out.print("};"); } }