文档章节

字符串排序

一贱书生
 一贱书生
发布于 2017/01/04 15:31
字数 324
阅读 34
收藏 0

题目描述

编写一个程序,将输入字符串中的字符按如下规则排序。
规则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.Scanner;
public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String str = scanner.nextLine();

            // 剔除输入串中的非英文字母字符
            // 同时按输入的顺序和字母顺序串成一个字符串
            StringBuilder builder = new StringBuilder();
            for (int i = 0; i < 26; i++) {
                for (int j = 0; j < str.length(); j++) {
                    if (str.charAt(j) == (i + 'a') || str.charAt(j) == (i + 'A')) {
                        builder.append(str.charAt(j));
                    }
                }
            }
            StringBuilder result = new StringBuilder();
            int k = 0;
            for (int i = 0; i < str.length(); i++) {
                if (!isLetter(str.charAt(i))) {
                    result.append(str.charAt(i));
                } else {
                    result.append(builder.charAt(k));
                    k++;
                }
            }

            System.out.println(result);
        }

        scanner.close();
    }

    private static boolean isLetter(char c) {
        return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z';
    }
}

© 著作权归作者所有

上一篇: 字符串合并处理
下一篇: 字符串加解密
一贱书生
粉丝 20
博文 724
码字总数 600123
作品 0
私信 提问

暂无文章

如何在 Linux 中更改 swappiness

交换空间是 RAM 内存已满时使用的硬盘的一部分。交换空间可以是专用交换分区或交换文件。当 Linux 系统耗尽物理内存时,非活动页面将从 RAM 移动到交换空间。Swappiness 是一个 Linux 内核属...

Linux就该这么学
7分钟前
1
0
OSChina 周二乱弹 —— 别戳屏幕!

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @ 这次装个文艺青年吧 :#今日歌曲推荐# 分享莫西子诗的单曲《把城市拉回乡下喂狗》: 《把城市拉回乡下喂狗》- 莫西子诗 手机党少年们想听歌,...

小小编辑
15分钟前
82
4
golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
今天
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
10
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部