博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
牛客网——复杂字符串排序
阅读量:5346 次
发布时间:2019-06-15

本文共 1770 字,大约阅读时间需要 5 分钟。

题目描述

编写一个程序,将输入字符串中的字符按如下规则排序(一个测试用例可能包含多组数据,请注意处理)。

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

 

链接:https://www.nowcoder.com/questionTerminal/d9aa3894d3aa4887843a85d26daa4437来源:牛客网import java.util.Scanner; public class Main {    public static void main(String[] args) {        Scanner input = new Scanner(System.in);        while (input.hasNext()) {            String s = input.nextLine();            String r = sort(s);            System.out.println(r);        }    }     public static String sort(String s) {        if (s.length() <= 0) {            return null;        }        char[] c = s.toCharArray();        StringBuffer sb = new StringBuffer();        // 对字母进行排序的思想是:将每一字符与'a'-'z'或'A'-'Z'做比较,并添加到字符缓冲中,经过此步骤完成了        // 不同字母按递增顺序排序,同一字母(不区分大小写)按原来顺序排列。        for (int i = 0; i < 26; i++) {            for (int j = 0; j < c.length; j++) {                if (c[j] == 'a' + i || c[j] == 'A' + i) {                    sb.append(c[j]);                }            }        }        StringBuffer res = new StringBuffer();        int flag = 0;        for (int i = 0; i < c.length; i++) {            if (isChar(c[i])) {                res.append(sb.charAt(flag));                flag++;            } else {                res.append(c[i]);            }        }        return res.toString();    }     // 判断某一字符是否为字母    public static boolean isChar(char c) {        if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {            return true;        } else {            return false;        }    }}

 

转载于:https://www.cnblogs.com/JAYPARK/p/10273431.html

你可能感兴趣的文章
经典C面试题
查看>>
Oracle数据库 表
查看>>
PHP cURL使用小结
查看>>
Apache 配置多站点访问「为项目分配二级域名」
查看>>
网页中插入透明Flash的方法和技巧
查看>>
动态内存申请函数选择(realloc、malloc 、alloca、 calloc)
查看>>
数和二叉树的基本概念和类型
查看>>
Oracle 基础学习(二) SQL基础查询
查看>>
弹出提示框,大面板
查看>>
poj2975(nim游戏取法)
查看>>
每天进步一点点010
查看>>
九度OJ 1535 重叠的最长子串
查看>>
【Swing 1】paint / paintComponent的区别和背景颜色设置的三种方法
查看>>
Analyzer中进行货币转换
查看>>
获取元素属性get_attribute
查看>>
视觉设计师的进化
查看>>
Python/jquery
查看>>
WPF之Binding
查看>>
【BZOJ】【2132】圈地计划
查看>>
vue中的小坑
查看>>