将一段压缩后的字符串解压缩,并且排序输出

解压规则:

每个字符串后面跟随一个数字,表示这个字符串的重复次数。例如,“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 字符串压缩

华为笔试:字符串解压缩相关推荐

  1. 华为笔试——字符串排序、去重、反转等算法(C语言版)

    最近刷题记录太多,字符串又是华为笔试非常爱考的知识点,设计字符串的读入.存取.字符的判断.比较.去重.排序等操作.根据华为近几年笔试中出现的题目,依次剖析每道题目的思想和算法实现. 注:题目的编号对应 ...

  2. Seeker的奇妙求职历险(华为笔试)

    矩阵报数 题目: 给出一个旋转矩阵,M行N列,左上角为(0,0),右下角为(M-1,N-1),从左上角开始计数,顺时针从外圈开始,外圈遍历完之后再遍历内圈,直到遍历完所有的点. 返回所有个位数为7且十 ...

  3. 华为 社招 C语言笔试,华为笔试C语言笔试题之3

    <华为笔试C语言笔试题之3>由会员分享,可在线阅读,更多相关<华为笔试C语言笔试题之3(10页珍藏版)>请在人人文库网上搜索. 1.C 语言笔试题之34. static 有什么 ...

  4. 20200422华为笔试

    20200422华为笔试 第一题 题目描述 输入描述 输出描述: 输入 输出 思路 代码 第二题 题目描述 输入描述 输出描述: 输入 输出 说明 思路 代码(Python3) 第三题 题目描述 输入 ...

  5. 字符串—解压缩(C语言)

    题目:有一种简单的字符串压缩算法,对于字符串中连续出现的同一个英文字符,用该字符加上连续出现的次数来表示(连续出现次数小于3时不压缩),例如,字符串aaaaabbbabaaaaaaaaaaaaabbb ...

  6. 2020.9.9华为笔试记忆:KMP+记忆化搜索+字典树

    2020.9.9华为笔试 当然,出现在我博客中的笔试都不是我自己的笔试(人家也不给我发笔试链接,小声bibi,诶,好像我也没投,hhhahahha 记者:为什么要做笔试? 我:生活无聊了喏,肯定要做啊 ...

  7. 2019华为笔试 找终点

    [算法][华为]2019华为笔试 找终点:给定一个正整数数组,最大为100个成员,从第一个成员开始,走到数组最后一个成员最少的步骤数, https://blog.csdn.net/qinglingLS ...

  8. 华为笔试时发现golang ACM模式输入的一个坑

    华为笔试时发现golang ACM模式输入的一个坑 golang ACM模式常用输入方法(scan,bufio):https://zhuanlan.zhihu.com/p/551393704 问题 第 ...

  9. 【2019华为笔试】召唤师的技能——圆排列,翻转和项链排列

    题目描述: dota游戏里面,召唤师可以控制冰雷火三种元素,并通过元素组合产生新的技能.现在我们修改了张新的地图, 地图中他能够控制n种元素, 并且将m个元素围成一个圈组成一 个新技能(这m个元素通过 ...

最新文章

  1. MyBatis学习总结(14)——Mybatis使用技巧总结
  2. 牛客寒假6-B.煤气灶
  3. Python正则表达式之零宽断言(4)
  4. String#repeat来到Java吗?
  5. Hadoop学习之路(十三)MapReduce的初识
  6. java创建xml设置路径_java 写入xml文件 地址如何设置为局域网内的另一台服务器上...
  7. DNS服务器配置详解
  8. Django:数据插入报错django.db.utils.IntegrityError: (1364, “Field ‘id‘ doesn‘t have a default value“)
  9. 【OpenCV学习笔记】【函数学习】三(cvGetCaptureProperty函数)
  10. 无线通信技术—LoRa
  11. C语言画直线~Bresenham方法
  12. 计算机故障图片,电脑提示损坏的图像该如何处理?
  13. 详解CheckStyle的检查规则(共138条规则)
  14. bootstrap v4 toast轻提示正确用法
  15. FPN (特征金字塔) 的原理和代码
  16. AI发展的桎梏在于理解能力?大咖开出的十一条建议「AI前沿」
  17. java安装了为什么运行不了_如何安装java(安装了java为什么不能使用)
  18. etc通行费发票怎么打印?通行费发票打印步骤
  19. 【C/C++】PDB文件:每个开发者都必须知道
  20. 学习笔记-Python-DataFrame常见操作总结

热门文章

  1. 编程中一些基本英语单词
  2. 通过机器学习得到样本的特征权重
  3. 安卓APK文件的icon图标文件获取 xml格式
  4. 会玩这 10 个 Linux 命令,一定是个有趣的 IT 男!
  5. 性能百万/s:腾讯轻量级全局流控方案详解
  6. 计算机非科班工作后如何爬出技术的绝望之谷,走向开悟之路
  7. [Pandas] 数据迭代
  8. 可能永远不会有 Python 4.0
  9. PCB叠层及阻抗简要
  10. 数据安全学习交流活动之走进360