作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

题目描述:

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

解题思路:

首先,构建一个vector组record存放每个字母对应的vector,比如record[0]就是a或者A,遍历字符串,将大小写字母的字符标记出来,令a[i]=1,即表示该位置是需要参与排序的,然后依次将所有字母字符存放在各自所属的字母vector中;再遍历一次字符串,若a[i]=1,则往该位置放入record存放的字母,先放record[0],也就是a或者A,放完0再放1、2、3,依次类推,直到所有字母放置后,字符串也实现了题目要求的排序。

测试代码:

#include <iostream>
#include <vector>
using namespace std;
int main()
{string in;while(getline(cin,in)){string temp=in;int a[10000]={0};vector<vector<char>> record(100);for(int i=0;i<in.size();++i){if(in[i]>='A'&&in[i]<='Z'){a[i]=1;record[in[i]-'A'].push_back(in[i]);}else if(in[i]>='a'&&in[i]<='z'){a[i]=1;record[in[i]-'a'].push_back(in[i]);}}int i=0,j=0;for(int t=0;t<in.size();++t){if(a[t]==1){while(j==record[i].size()){i++;j=0;}temp[t]=record[i][j];j++;}}cout<<temp<<endl;}return 0;
}

华为机试HJ26:字符串排序相关推荐

  1. 华为机试:字符串比较

    题目来源 华为机试:字符串比较 题目描述 题目解析 思路: 先对A[].B[]进行预处理,生成C[] ,其中 C[i] = std::abs(A[i] - B[i]); 然后我们只看C,这样问题就转换 ...

  2. 华为机试-蛇形字符串

    题目描述: 输入一个字符串(不含空格), 请寻找输入中包含所有蛇形字符串. 蛇形字符串定义: 1.蛇形字符串由连续字符对组成,其特点如下: 1.1 字符对定义:字符对由同一字母的大写和小写组成(前大后 ...

  3. 【带你刷华为机试】——字符串分割

    目录 题目:HJ4 字符串分割 题目链接:字符串分割 题目描述: 输入描述: 输出描述: 示例 解题思路: 解法: [前言]先干了生活这碗毒鸡汤:无论将来会遇到谁,生活都是先从遇到自己开始的. 题目: ...

  4. 华为机试HJ4 字符串分割

    通过全部用例,运行时间19ms,占用内存9828kb,记得在上面添加java对应的import包. BufferedReader br = new BufferedReader(new InputSt ...

  5. 【牛客网 - 华为机试 - HJ4 字符串分割】

    描述 •连续输入字符串,请按长度为8拆分每个输入字符串并进行输出: •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入字符串(每个字符串长度小于等于100) 输出描述: ...

  6. 华为机试HJ36字符串加密

    HJ36字符串加密-Python 题目 解题思路 代码 题目 解题思路 1.多组输入,按一般处理办法,循环 2.第一行,密钥,处理办法:转大写后,直接合并26个大写字母,去重,再截取26位,得到密钥: ...

  7. 华为机试108题(C 语言解答)

    Nowcoder题库链接:华为机试 HJ1 字符串最后一个单词的长度(字符串) 输入:hello nowcoder输出:8说明: 最后一个单词为nowcoder,长度为8 示例代码: HJ1.c #i ...

  8. 集合篇10.华为机试(涮题记录2)

    华为机试 31.成绩排序(**not) 32. 矩阵乘法 33. 24点游戏算法(not) 34.配置文件恢复 35. 查找两个字符串a.b中的最长公共子串 36.MP3光标位置(not) 37.DN ...

  9. [华为机试真题][2014]62.去除重复字符并排序

    题目 描述: 去除重复字符并排序 运行时间限制: 无限制 内容限制: 无限制 输入: 字符串 输出: 去除重复字符并排序的字符串 样例输入: aabcdefff 样例输出: abcdef 代码 /*- ...

最新文章

  1. 格式化的盘要怎么寻回文件
  2. oracle索引优劣,ORACLE的五种表的优缺点概述
  3. 10月18号站立会议
  4. 1.6.2java工业星系_我的世界1.6.4
  5. servlet和JSP页面乱码问题
  6. 计算机网络-01-计算机网络体系结构
  7. fast recovery area oracle,oracle Fast Recovery Area的管理
  8. 阿里云ECS安骑士离线修复步骤
  9. 西安电子科技大学计算机考研资料汇总
  10. ffmpeg 视频转码
  11. 帮你混迹职场风生水起的八大定律
  12. iic的SDA引脚偶尔有毛刺(尖峰)是怎么回事。
  13. Themida是先进的Windows软件保护系统
  14. 海信手机插上卡显示无服务器,海信电视机开不了机怎么回事 海信电视开不了机解决方法【详解】...
  15. execl(知道每个商品单价,且知道总价,计算每个商品的数量)
  16. 使用Python库pyqt5制作TXT阅读器(四)-------应用设置和程序打包
  17. Basler工业相机使用环境配置——Linux系统
  18. [NOIP2009]靶形数独
  19. Redis详解(1)--原理和机制
  20. 抓取崔庆才个人博客网站前端源码

热门文章

  1. Dubbo使用Sentinel来对服务进行降级与限流
  2. sqlServer对内存的管理
  3. Android 动画的分类
  4. 766. 托普利茨矩阵
  5. 京东购物车双11实战
  6. 连续和问题C语言,内存连续的有关问题
  7. ios java 通信_AES加密解密 -- iOS、Java之间的互相通信
  8. vue 时间格式化函数_vue开发记录--通用时间格式函数
  9. android上传字符串到服务器,【图片】【转】通过Android 客户端上传数据到服务器【aide吧】_百度贴吧...
  10. java 错误日期转正确日期_java – jdk8日期转换中的错误?