博客
关于我
字符串排序
阅读量:439 次
发布时间:2019-03-06

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

题目描述

编写一个程序,将输入字符串中的字符按如下规则排序。

规则1:英文字母从AZ排列,不区分大小写。

      如,输入:Type 输出:epTy

规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列。

    如,输入:BabA 输出:aABb

规则3:非英文字母的其它字符保持原来的位置。

    如,输入:By?e 输出:Be?y

样例:

    输入:

   A Famous Saying: Much Ado About Nothing(2012/8).

    输出:

   A aaAAbc dFgghhiimM nNn oooos Sttuuuy (2012/8).

输入描述:
 
输出描述:
 
输入例子:
A Famous Saying: Much Ado About Nothing (2012/8).
输出例子:
A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).

题目思路:

受教于一位大神

先把字符的挑出来,保存进pair中,first键值保存字符,second保存位置。

挑出来之后sort排序,里面用了lambda表达式,如果转换小写之后相同,按照位置从小到大排,不相同统一按照小写字符a~z排序。
然后排序完成之后的arr重新放入原来的字符串,保证了非字母字符的位置不变。最后输出

代码:

#include
using namespace std;const int MAXN=1005;pair
ans[MAXN];bool cmp(pair
a,pair
b){ if(tolower(a.first)==tolower(b.first)) return a.second
还有lambda表达式形式的cmp

sort(ans,ans+index,[](pair
a,pair
b)->bool{ if(tolower(a.first)==tolower(b.first)) return a.second

转载地址:http://mvjyz.baihongyu.com/

你可能感兴趣的文章
MySQL数据库与Informix:能否创建同名表?
查看>>
mysql的sql语句基本练习
查看>>
mysql自增id超大问题查询
查看>>
mysql进阶 with-as 性能调优
查看>>
MySQL锁与脏读、不可重复读、幻读详解
查看>>
MySQL集群解决方案(4):负载均衡
查看>>
mysql面试题学校三表查询_mysql三表查询分组后取每组最大值,mysql面试题。
查看>>
mysql颠覆实战笔记(八)--mysql的自定义异常处理怎么破
查看>>
MYSQL高可用集群MHA架构
查看>>
MySQL高级-MySQL并发参数调整
查看>>
MySQL高级-SQL优化步骤
查看>>
MySQL高级-视图
查看>>
mysql高级查询~分页查询
查看>>
MySQL:判断逗号分隔的字符串中是否包含某个字符串
查看>>
nacos config
查看>>
Nacos在双击startup.cmd启动时提示:Unable to start embedded Tomcat
查看>>
Nacos安装教程(非常详细)从零基础入门到精通,看完这一篇就够了
查看>>
Nacos配置中心集群原理及源码分析
查看>>
nacos配置自动刷新源码解析
查看>>
Nacos集群搭建
查看>>