题目描述 编写一个程序,将输入字符串中的字符按如下规则排序。 规则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).
思路: 循环26次第一次找出数组中所有的A和a,第二次找出所有的B和b,,这样可以按顺序找出所有的26个字母,然后将非字母插到它们在字符串中的原来位置。
代码:
import java.util.Scanner;public class StringSort { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); while(sc.hasNext()) { String s=sc.nextLine(); char[] chArray=s.toCharArray(); System.out.PRintln(stringSort(chArray)); } } public static String stringSort(char chArray[]) { StringBuffer sb=new StringBuffer(); for(int i=0;i<26;i++) { char ch=(char) ('a'+i); for(int j=0;j<chArray.length;j++) { if(chArray[j]==ch||chArray[j]==(char)(ch+'A'-'a')) { sb.append(chArray[j]); } } } for(int i=0;i<chArray.length;i++) { if(!(chArray[i]>='a'&&chArray[i]<='z'||chArray[i]>='A'&&chArray[i]<='Z')) { sb.insert(i, chArray[i]); } } return sb.toString(); } }新闻热点
疑难解答