题解 | #字符串排序#

字符串排序

http://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584

首先把非字母剔出来,并记录其下标。然后把剩余的字母进行排序,排序后再插入非字母即可。

class CH{
    char ch;
    int index;
    public CH(char ch,int index){
        this.ch = ch;
        this.index = index;
    }
}
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) { // 注意 while 处理多个 case
            String s = in.nextLine();
            List<Character> list = new ArrayList<>();
            List<CH> olist = new LinkedList<>();
            char[] chs = s.toCharArray();
            for(int i =0;i<chs.length;++i){
                if(chs[i]>='a'&&chs[i]<='z'||chs[i]>='A'&&chs[i]<='Z'){
                   list.add(chs[i]);
                }
                else olist.add(new CH(chs[i],i));
            }
            Collections.sort(list,new Comparator<Character>(){
                public int compare(Character c1,Character c2){
                    return Character.toLowerCase(c1)-Character.toLowerCase(c2);
                }
            });
            while(olist.size()!=0){
                CH obj= olist.get(0);
                olist.remove(0);
                list.add(obj.index,obj.ch);
            }
            for(Character cha:list){
                System.out.print(cha);
            }
        }
    }
}
全部评论
字母按顺序先拿出来,拿出来的用a代替。再以卖出来的字母回填替换a
点赞 回复 分享
发布于 2023-02-08 12:05 广东

相关推荐

评论
4
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务