题目
对于给定的由可见字符和空格组成的字符串,按照下方的规则进行排序:
- 按照字母表中的顺序排序(不区分大小写);
- 同一字母的大小写同时存在时,按照输入顺序排列;
- 非字母字符保持原来的位置不参与排序;
直接输出排序后的字符串。字符串由 ASCII 码在 32 到 126 范围内的字符组成。
示例
示例1
输入:BabA
输出:aABb
示例2
输入:Hello NowCoder!
输出:CdeeH llNooorw!
分析
为了实现对给定字符串按照指定规则进行排序,可以采用以下思路:
- 遍历字符串,提取其中的字母并存储到一个新的容器中
- 对存储字母的容器进行排序,排序时不区分大小写
- 再次遍历原字符串,将排序后的字母依次放回原字符串中字母的位置,非字母字符保持不变
线性遍历+稳定排序
为了满足 “同一字母的大小写同时存在时,按照输入顺序排列” 这一规则,我们可以使用稳定排序算法来处理提取出的字母。std::stable_sort 可以保证相等元素的相对顺序不变。
时间复杂度:O(),其中
是字符串的长度,

最低0.47元/天 解锁文章
4397

被折叠的 条评论
为什么被折叠?



