巧妙的字符串排序,保证你不看,绝对想不到

题目描述

编写一个程序,将输入字符串中的字符按如下规则排序。

规则1:英文字母从AZ排列,不区分大小写。

      如,输入:Type 输出:epTy

规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列。

    如,输入:BabA 输出:aABb

规则3:非英文字母的其它字符保持原来的位置。

    如,输入:By?e 输出:Be?y

样例:

    输入:

   A Famous Saying: Much Ado About Nothing(2012/8).

    输出:

   A aaAAbc dFgghhiimM 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 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()); } } }


 
  

你可能感兴趣的:(pat,程序员面试指南,蓝桥杯)