36:字符串排序SortString

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

规则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).

 思路:一个嵌套循环把字符串中的字母进行排序,把所有排序后的字母专门放在temp[]中,最后输出的时候,遍历原来的字符数组,如果某一位是字母,那么去temp中取对应位置已经排好序的字母输出,非字母,就输出原位置字符。

 1 /*题目描述:编写一个程序,将输入字符串中的字符按如下规则排序。
 2 规则1:英文字母从A到Z排列,不区分大小写。
 3       如,输入:Type 输出:epTy
 4 规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列。
 5     如,输入:BabA 输出:aABb
 6 规则3:非英文字母的其它字符保持原来的位置。
 7     如,输入:By?e 输出:Be?y
 8 样例:
 9     输入:
10    A Famous Saying: Much Ado About Nothing(2012/8).
11     输出:
12    A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).
13 */
14 import java.util.Scanner;
15 
16 public class Main {
17 
18     public static void main(String[] args) {
19         // TODO Auto-generated method stub
20         Scanner in = new Scanner(System.in);
21         while(in.hasNext())
22         {
23             String input = in.nextLine();
24             int length = input.length();
25             char[] array = input.toCharArray();
26             //input里面的所有字母排序
27             char[] temp = new char[length];
28             int k = 0;
29             for(int i = 0; i<26; i++)
30             {
31                 for(int j = 0; j<length; j++)
32                 {
33                     if(array[j] - 'a' == i || array[j] - 'A' == i)
34                     {
35                         temp[k++] = array[j];
36                     }
37                 }
38             }
39             //notice!!
40             k = 0;
41             for(int i = 0; i<length; i++)
42             {
43                 if(array[i] >= 'a' && array[i] <= 'z' || array[i] >= 'A' && array[i] <= 'Z')
44                 {
45                     array[i] = temp[k++];
46                     //array[i] = temp[i];
47                 }
48             }
49             System.out.println(String.valueOf(array));
50         }
51     }
52 
53 }

 

转载于:https://www.cnblogs.com/newcoder/p/5814732.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值