HJ26-字符串排序

题目

在这里插入图片描述

思路

  1. 第一眼看非常简单甚至想跳过,第二下开始做的时候发现不简单了。
  2. 去看了题解,主要是不理解怎么实现规则1和规则2的,查了下别人用的方法。
  3. 题解用 toLowerCase() 方法将字符串转换为小写 然后再比较大小,这样的话确实可以实现无视大小写且按照顺序排序,学习学习。
  4. o1-o2就是说按照它们的小写排序
        vec.sort(new Comparator<Character>() {
            public int compare(Character o1, Character o2) {
                return Character.toLowerCase(o1) - Character.toLowerCase(o2);
            }
        });

题解

import java.util.*;



class Solution {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        String str = s.nextLine();
        //先用vector存储英文
        Vector<Character> vec = new Vector<Character>();
        for(int i=0;i<str.length();i++){
            if(Character.isLetter(str.charAt(i))){
                vec.add(str.charAt(i));
            }
        }
        vec.sort(new Comparator<Character>() {
            public int compare(Character o1, Character o2) {
                return Character.toLowerCase(o1) - Character.toLowerCase(o2);
                //当o1-o2>0时 o2在o1后边
            }
        });

        //构建新字符串
        StringBuilder result = new StringBuilder();
        //从vec里面取数的index
        int j =0;
        for(int i=0;i<str.length();i++){
            //如果是字母
            if(Character.isLetter(str.charAt(i))){
                result.append(vec.elementAt(j++));
            }else{
                result.append(str.charAt(i));
            }
        }
        System.out.println(result.toString());
        return ;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值