题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
散列表方法,将相同(a,A)的字符串添加到一个队列上,并将char数组的当前位置置为0
再将数组散列表遍历,重新赋值到char数组,最后将char数组转为字符串
菜鸟方法......
import java.util.*;
import java.util.concurrent.ConcurrentLinkedQueue;
public class Main{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
String str = scan.nextLine();
ConcurrentLinkedQueue<Character>[] ls = new ConcurrentLinkedQueue[27];
char[] chars = str.toCharArray();
//将所有字符添加到散列表中
for(int i = 0;i < chars.length;i++){
char c = chars[i];
int subtracted;
if(c >= 65 && c <= 90){
subtracted = 65;
}else if(c >= 97 && c<= 122){
subtracted = 97;
}else{
continue;
}
if(ls[c - subtracted] == null ){
ls[c - subtracted] = new ConcurrentLinkedQueue<>();
}
ls[c - subtracted].offer(c);
chars[i] = 0;
}
int j = 0;
//将排好的字符依次添加到原数组中
for (ConcurrentLinkedQueue<Character> l : ls) {
if(l == null) continue;
for(char c : l){
while (chars[j] != 0) {
j++;
}
if(chars[j] == 0){
chars[j++] = c;
}
}
}
System.out.println(new String(chars));
}
}
