巧妙的字符串排序,保证你不看,绝对想不到
题目描述
编写一个程序,将输入字符串中的字符按如下规则排序。
规则1:英文字母从A到Z排列,不区分大小写。
如,输入:Type 输出:epTy
规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列。
如,输入:BabA 输出:aABb
规则3:非英文字母的其它字符保持原来的位置。
如,输入:By?e 输出:Be?y
样例:
输入:
A Famous Saying: Much Ado About Nothing(2012/8).
输出:
A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).
import java.util.*; public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); while (s.hasNext()) { String str = s.nextLine(); ArrayList ls = new ArrayList();
此注释为经典的桶排序思想// for (int j = 0; j < 26; j++) // for (int i = 0; i < str.length(); i++) { // char ch = str.charAt(i); // if (ch - 'a' == j || ch - 'A' == j) // ls.add(ch); // } int k = 0; StringBuffer sb=new StringBuffer(); for(int i=0; i<str.length(); i++){ char chs=str.charAt(i); if ((chs >= 'a' && chs <= 'z') || (chs >= 'A' && chs <= 'Z')) sb.append(ls.get(k++)); else sb.append(chs); } System.out.println(sb.toString()); } } }