题解 | #字符串排序#
字符串排序
https://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
import java.util.*; import java.util.regex.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 while (in.hasNext()) { // 注意 while 处理多个 case String s = in.nextLine(); String s1 = s.replaceAll("[^a-zA-Z]", ""); //利用正则去掉非字母 char[] c = s1.toCharArray(); //转换为字符数组方便排序 for(int i=0;i<c.length;i++) { //插入排序 char temp = c[i]; for(int j=i-1;j>=0;j--) { if(Character.toLowerCase(c[j])>Character.toLowerCase(temp)) { //比较时统一为小写字母,方便ASCLL比较 c[j+1]=c[j]; c[j]=temp; } } } StringBuilder sb = new StringBuilder(String.valueOf(c)); //将排序后的数组转为可变字符串 for(int i=0;i<s.length();i++) { //将非字母按照原来的顺序插回去 char c1 = s.charAt(i); if( c1<'A' || (c1>'Z'&&c1<'a') || c1>'z') { sb.insert(i, c1); } } System.out.print(sb.toString()); } } }