解题思路:采用两个列表分别存储字符串中出现的字符和次数,然后用直接选择排序按照字符存储的值升序排序两个列表,最后输出结果。
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);
}
}
}
京公网安备 11010502036488号