码迷,mamicode.com
首页 > 编程语言 > 详细

字符串排序

时间:2019-03-14 01:05:06      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:imp   代码   string   pre   方法   lower   int   char   nothing   

看了别人的代码,发现自己还是菜了。对Java api的使用不熟练

介绍一下题目

题目描述

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

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

输入

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 in = new Scanner(System.in);
        while(in.hasNext()){
            String str = in.nextLine();
            char[] chr = str.toCharArray();
            List<Character> list = new LinkedList();
            for(Character ch : chr){
                if(Character.isLetter(ch))
                    list.add(ch);
            }
             
            Collections.sort(list, new Comparator<Character>(){
                public int compare(Character c1, Character c2){
                    return Character.toLowerCase(c1) - Character.toLowerCase(c2);
                }
            });
            int cnt = 0;
            for(int i = 0; i < chr.length; i++){               
                if(Character.isLetter(chr[i])){
                    chr[i] = list.get(cnt);
                    cnt++;
                }
            }
 
            System.out.println(chr);
        }
    }
}

首先利用Character isLetter方法判断是不是字母

然后是字母添加到一个LinkedList中

再排序

然后替换原来的字符串中的字母

(Collection.sort()方法真的非常简洁,我蠢到自己手写排序...)

字符串排序

标签:imp   代码   string   pre   方法   lower   int   char   nothing   

原文地址:https://www.cnblogs.com/shineyoung/p/10527591.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!