华为笔试:字符串解压缩
将一段压缩后的字符串解压缩,并且排序输出
解压规则:
每个字符串后面跟随一个数字,表示这个字符串的重复次数。例如,“a5"解压后的结果为"aaa;"abc3"解压后的结果
为abcabcabc。
排序规则
1、根据每个字符串的重复次数升序排序,然后输入结果例如,“a3b2”,输出的结果为“ obama
2、如果字符重复次数一样,则根据ASC!码顺序做升序排序,然后输出结果。
例如,“b2a2,输出的结果为"abb
输入描述:输入的原始字符串仅包含字母与数字
思路讲解:使用hash对字符串个数进行存储,Key为字符个数,Value为字符串数组,打印字符时按key依次打印,对value中的字符串数组排序输出即可。
按顺序对输入字符串进行读取,将字符数据存在一个字符串中,当遇到数字时:
while (str[i] >= '0'&&str[i] <= '9'&&i < len) {
num = num * 10 + str[i] - '0';
i++;
}
使用num进行存储,当出现非数字字符时,将key等于Num,value为字符串数组,如果key存在,读取value字符串数组,将字符串存入数组,更新key,value;如果不存在就新建数组存入hash表中。
typedef struct typen {vector<string> k;}typen;
int main()
{string str;string st;cin >> str;int len = str.size();int i = 0;int num = 0;int flag = 0;map<int, typen > m;while(i<len){if (str[i] >= '0'&&str[i] <= '9'){num = num * 10 + str[i] - '0';i++;while (str[i] >= '0'&&str[i] <= '9'&&i < len) {num = num * 10 + str[i] - '0';i++;}typen sss;if (m.find(num) == m.end()) m[num] = sss;else sss = m[num];string mm="";for (int j = 0; j < num; j++)mm += st;sss.k.push_back(mm);m[num] = sss;st = "";num = 0;}else{st.push_back(str[i++]);}}map<int, typen>::iterator iter;for (int i=0;i<1024;i++){typen sk = m[i];sort(sk.k.begin(), sk.k.end());for (int i = sk.k.size()-1; i >-1; i--)cout << sk.k[i];}return 0;
}
推荐一种字符压缩题:String Compression 字符串压缩
华为笔试:字符串解压缩相关推荐
- 华为笔试——字符串排序、去重、反转等算法(C语言版)
最近刷题记录太多,字符串又是华为笔试非常爱考的知识点,设计字符串的读入.存取.字符的判断.比较.去重.排序等操作.根据华为近几年笔试中出现的题目,依次剖析每道题目的思想和算法实现. 注:题目的编号对应 ...
- Seeker的奇妙求职历险(华为笔试)
矩阵报数 题目: 给出一个旋转矩阵,M行N列,左上角为(0,0),右下角为(M-1,N-1),从左上角开始计数,顺时针从外圈开始,外圈遍历完之后再遍历内圈,直到遍历完所有的点. 返回所有个位数为7且十 ...
- 华为 社招 C语言笔试,华为笔试C语言笔试题之3
<华为笔试C语言笔试题之3>由会员分享,可在线阅读,更多相关<华为笔试C语言笔试题之3(10页珍藏版)>请在人人文库网上搜索. 1.C 语言笔试题之34. static 有什么 ...
- 20200422华为笔试
20200422华为笔试 第一题 题目描述 输入描述 输出描述: 输入 输出 思路 代码 第二题 题目描述 输入描述 输出描述: 输入 输出 说明 思路 代码(Python3) 第三题 题目描述 输入 ...
- 字符串—解压缩(C语言)
题目:有一种简单的字符串压缩算法,对于字符串中连续出现的同一个英文字符,用该字符加上连续出现的次数来表示(连续出现次数小于3时不压缩),例如,字符串aaaaabbbabaaaaaaaaaaaaabbb ...
- 2020.9.9华为笔试记忆:KMP+记忆化搜索+字典树
2020.9.9华为笔试 当然,出现在我博客中的笔试都不是我自己的笔试(人家也不给我发笔试链接,小声bibi,诶,好像我也没投,hhhahahha 记者:为什么要做笔试? 我:生活无聊了喏,肯定要做啊 ...
- 2019华为笔试 找终点
[算法][华为]2019华为笔试 找终点:给定一个正整数数组,最大为100个成员,从第一个成员开始,走到数组最后一个成员最少的步骤数, https://blog.csdn.net/qinglingLS ...
- 华为笔试时发现golang ACM模式输入的一个坑
华为笔试时发现golang ACM模式输入的一个坑 golang ACM模式常用输入方法(scan,bufio):https://zhuanlan.zhihu.com/p/551393704 问题 第 ...
- 【2019华为笔试】召唤师的技能——圆排列,翻转和项链排列
题目描述: dota游戏里面,召唤师可以控制冰雷火三种元素,并通过元素组合产生新的技能.现在我们修改了张新的地图, 地图中他能够控制n种元素, 并且将m个元素围成一个圈组成一 个新技能(这m个元素通过 ...
最新文章
- MyBatis学习总结(14)——Mybatis使用技巧总结
- 牛客寒假6-B.煤气灶
- Python正则表达式之零宽断言(4)
- String#repeat来到Java吗?
- Hadoop学习之路(十三)MapReduce的初识
- java创建xml设置路径_java 写入xml文件 地址如何设置为局域网内的另一台服务器上...
- DNS服务器配置详解
- Django:数据插入报错django.db.utils.IntegrityError: (1364, “Field ‘id‘ doesn‘t have a default value“)
- 【OpenCV学习笔记】【函数学习】三(cvGetCaptureProperty函数)
- 无线通信技术—LoRa
- C语言画直线~Bresenham方法
- 计算机故障图片,电脑提示损坏的图像该如何处理?
- 详解CheckStyle的检查规则(共138条规则)
- bootstrap v4 toast轻提示正确用法
- FPN (特征金字塔) 的原理和代码
- AI发展的桎梏在于理解能力?大咖开出的十一条建议「AI前沿」
- java安装了为什么运行不了_如何安装java(安装了java为什么不能使用)
- etc通行费发票怎么打印?通行费发票打印步骤
- 【C/C++】PDB文件:每个开发者都必须知道
- 学习笔记-Python-DataFrame常见操作总结