前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode-字符串排序

LeetCode-字符串排序

作者头像
benym
发布2022-07-14 16:52:38
3150
发布2022-07-14 16:52:38
举报
文章被收录于专栏:后端知识体系后端知识体系

# LeetCode-字符串排序

编写一个程序,将输入字符串中的字符按如下规则排序。 规则 1 :英文字母从 A 到 Z 排列,不区分大小写。 如,输入: Type 输出: epTy 规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。 如,输入: BabA 输出: aABb 规则 3 :非英文字母的其它字符保持原来的位置。 如,输入: By?e 输出: Be?y

示例1:

代码语言:javascript
复制
输入:
A Famous Saying: Much Ado About Nothing(2012/8).

输出:
A aaAAbc dFgghh : iimM nNn oooos Sttuuuy (2012/8).

示例2:

代码语言:javascript
复制
输入例子:
A Famous Saying: Much Ado About Nothing (2012/8).

输出例子:
A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).

# 解题思路

外层循环按照26个字母的顺序循环,内层进行字母顺序进行字符串的遍历,如按照A字母内层一轮,将A和a加入到结果集。循环完毕之后,res中即存储的排序好的字符串

由于需要保持原本的非英文字符串不变,再遍历一次字符串,将非英文字符按照原位置插入到res中即可。

代码语言:javascript
复制
import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine().trim();
        char[] cs = str.toCharArray();
        StringBuilder res = new StringBuilder();
        //  循环26个字符
        for (int i = 0; i < 26; i++) {
            // 循环字符串排序,按照A字母一轮,B字母一轮添加进builder
            for (int j = 0; j < str.length(); j++) {
                if (cs[j] == (i + 'a') || cs[j] == (i + 'A')) {
                    res.append(cs[j]);
                }
            }
        }
        //再次遍历字符串
        for (int i = 0; i < str.length(); i++) {
            // 如果不是英文字符,直接添加进结果
            if (!(cs[i] >= 'a' && cs[i] <= 'z' || cs[i] >= 'A' && cs[i] <= 'Z')) {
                res.insert(i, cs[i]);
            }
        }
        System.out.println(res.toString());
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-08-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # LeetCode-字符串排序
    • # 解题思路
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档