解题思路:采用两个列表分别存储字符串中出现的字符和次数,然后用直接选择排序按照字符存储的值升序排序两个列表,最后输出结果。
import java.util.*; public class Main{ public static void main(String arg[]){ Scanner scan=new Scanner(System.in); String str=scan.nextLine(); List<Integer> list1=new ArrayList<>(); List<Character> list2=new ArrayList<>(); int k=0; for(int i=0;i<str.length();i++){ if(list2.contains(str.charAt(i))){ k=list2.indexOf(str.charAt(i)); list1.set(k, list1.get(k)+1); } else { list2.add(str.charAt(i)); list1.add(1); } } sortList(list1,list2); for(int i=0;i<list1.size();i++) { System.out.print(list2.get(i)); System.out.print(list1.get(i)); } } public static void sortList(List<Integer> list1,List<Character> list2) { char c='a'; int t=0; int k=list1.size()-1; int m=0; for(int i=k;i>=0;i--) { c=list2.get(i); t=i; for(int j=0;j<=i;j++) { if(list2.get(j)>c) { c=list2.get(j); t=j; } } list2.set(t, list2.get(i)); m=list1.get(t); list1.set(t, list1.get(i)); list2.set(i, c); list1.set(i, m); } } }