题解 | #字符串排序#

字符串排序

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

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) {
        BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
        String a;
        try {
            a = r.readLine();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        char[] chs = a.toCharArray();
        int i = 0, j, k, b1 = 0, b2 = 0, l = chs.length;
        char ch;
        boolean bool1, bool2, bool3, bool4;//
        while (i < l - 1) {
            j = 0;//前一个比较的值
            k = j + 1;//后一个比较的值
            while (j < l - i && k < l - i) {
                bool1 = (chs[j] - 'a' | 'z' - chs[j]) >
                        0;//索引为j的字符是否在a~z之间
                bool2 = (chs[j] - 'A' | 'Z' - chs[j]) >
                        0;//索引为j的字符是否在A~Z之间
                bool3 = (chs[k] - 'a' | 'z' - chs[k]) >
                        0;//索引为k的字符是否在a~z之间
                bool4 = (chs[k] - 'A' | 'Z' - chs[k]) >
                        0;//索引为k的字符是否在A~Z之间
                if ((bool1 || bool2) && (bool3 || bool4)) {
                    if (bool1) b1 = chs[j] - 'a';//忽略大小写
                    if (bool2) b1 = chs[j] - 'A';//忽略大小写
                    if (bool3) b2 = chs[k] - 'a';//忽略大小写
                    if (bool4) b2 = chs[k] - 'A';//忽略大小写
                    if (b1 > b2) {//冒泡排序
                        ch = chs[j];
                        chs[j] = chs[k];
                        chs[k] = ch;
                    }
                    j = k;//索引赋值,比较下一对
                    k++;//索引赋值,比较下一对
                } else if (!bool1 && !bool2 && (bool3 || bool4)) {
                    j = k;//第一个不是,索引往后走一个是字母的索引
                    k++;//第二索引+1
                } else if ((bool1 || bool2) && !bool3 && !bool4) {
                    k++;//第二个不是,第二个索引+1
                } else {//两个比较值都不是字母,索引+2
                    j += 2;
                    k += 2;
                }
            }
            i++;
        }
        System.out.print(new String(chs));
    }
}

全部评论

相关推荐

04-17 10:16
门头沟学院 Java
不河狸啊:为什么我的是已送达,连已读都没有
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务