题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
import java.util.*; // 硬解,暂时记录一下,后面想到了再优化思路 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextLine()) { String s = in.nextLine(); System.out.println(sort(s)); } } public static String sort(String s) { StringBuilder[] bs = new StringBuilder[26]; char[] cs = s.toCharArray(); for(int i = 0; i < 26; i++) bs[i] = new StringBuilder(); int n = s.length(); ArrayList<Integer> idxs = new ArrayList<Integer>(); StringBuilder b = new StringBuilder(); for(int i = 0; i < n; i++) { if(!Character.isLetter(s.charAt(i))) continue; idxs.add(i); int idx = Character.toLowerCase(s.charAt(i)) - 'a'; bs[idx].append(s.charAt(i)); } for(int i = 0; i < 26; i++) b.append(bs[i]); for(int i = 0; i < idxs.size(); i++) cs[idxs.get(i)] = b.charAt(i); return new String(cs); } }