华为笔试题 字符串解压缩

题目描述
将一段压缩后的字符串解压缩,并且排序输出。

解压规则:

每个字符串后面跟着一个数字,表示这个字符串的重复次数。例如,”a5”解压后的结果为”aaaaa”;’abc3’解压后的结果为”abcabcabc”。

排序规则:

1、根据每个字符串的重复次数升序排序,然后输出结果。例如,”a3b2”,输出的结果为”bbaaa”。
2、如果字符重复次数一样,则根据ASCII编码顺序做升序排序,然后输出结果。例如,”b2a2”,输出的结果为”aabb”。

输入描述:

输入的原始字符串仅包含字母与数字

输出描述:

输出的结果字符串仅包含字母

示例1

输入

a11b2bac3bad3abcd2

输出

abcdabcdbbbacbacbacbadbadbadaaaaaaaaaaa

下面直接上代码了。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>typedef struct {char str[256];int num;
} strList;#define ISNUM(a) (a <= '9' && a >= '0')int cmp(const void *a, const void *b) {strList *list1, *list2;list1 = (strList *)a;list2 = (strList *)b;printf("list1: %d, list: %d\n", list1->num,  list2->num);if(list1->num != list2->num) {return list1->num - list2->num;} else {return strcmp(list1->str, list2->str);}
}
`int main(void)
{char *strOrg = "a1bc14";char strUnzip[100000] = {0};int i, j = 0, k = 0;strList list[256] = {{0}, 0};int nums = 0;int size;for(i = 0; i < strlen(strOrg); i++) {if(i > 0 && !ISNUM(strOrg[i]) && ISNUM(strOrg[i - 1])) {list[j].num = nums;nums = 0;j++;k = 0;}if(!ISNUM(strOrg[i])) {list[j].str[k] = strOrg[i];k++;} else {nums = nums * 10 + strOrg[i] - '0';}}if(nums == 0) {list[j].num = 1;} else {list[j].num = nums;}qsort(list, j + 1, sizeof(strList), cmp);i = 0, j = 0, k = 0;while(list[j].num > 0) {size = strlen(list[j].str);strncpy(&strUnzip[i], list[j].str, size);i += size;list[j].num--;if(list[j].num == 0) {j++;}}printf("%s", strUnzip);system("pause");
}

华为笔试题 字符串解压缩(C语言解法)相关推荐

  1. 【leetcode】第394题:字符串解码(华为笔试题)

    题目:给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次.注意 k 保证为正整数. ...

  2. 2019届华为笔试题(软件卷)

    华为笔试题共3道编程题.第一题100分,第二题200分,第三题300分,一共600分. 第一题: 输入描述: 1.忽略小数点,例如"A1.2",认为包含整数1和2: 2.如果整数的 ...

  3. 华为笔试题---明明的随机数

    题目 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着 ...

  4. 华为笔试题 -- 多个数组按顺序合并(Java代码实现)

    华为笔试题 – 多个数组按顺序合并(Java代码实现) 题目描述: 现在有多组整数数组,需要将他们合并成一个新的数组.合并规则,从每个数组里按顺序取出固定长度的内容合并到新的数组中,取完的内容会删除掉 ...

  5. 2014-百度 阿里 华为笔试题

    8月15日,百度2道面试题: 1.来自<编程之美>的概率题:一个桶里面有白球.黑球各100个,现在按下述规则取球:的     i .每次从通里面拿出来两个球:     ii.如果取出的是两 ...

  6. 文字加减前后缀lisp_华为笔试题---仿LISP算法

    直接上代码,水平有限,欢迎小伙伴们指正(暂不知效率如何) import java.util.Scanner; import java.util.Stack; /** * 仿LISP字符串运算 * LI ...

  7. 华为笔试:字符串解压缩

    将一段压缩后的字符串解压缩,并且排序输出 解压规则: 每个字符串后面跟随一个数字,表示这个字符串的重复次数.例如,"a5"解压后的结果为"aaa;"abc3&q ...

  8. 华为笔试题 简答错误记录(字符串处理,好题!!!)

    输入描述: 一行或多行字符串.每行包括带路径文件名称,行号,以空格隔开.文件路径为windows格式如:E:\V1R2\product\fpgadrive.c 1325 输出描述: 将所有的记录统计并 ...

  9. lisp压盖_华为笔试题--LISP括号匹配 解析及源码实现

    在17年校招中3道题目AC却无缘华为面试,大概是华为和东华互不待见吧!分享一道华为笔试原题,共同进步! ************************************************ ...

  10. 华为机试字符串分割c语言,2014年华为上机机试c语言标题和答案

    2014年华为上机机试c语言题目和答案 自己code出来的,结果是正确的,但是其中还有很多的优化之处,还请各位大神多多指导. 代码打包: http://download.csdn.net/detail ...

最新文章

  1. Android 图片的帧动画
  2. 【数据竞赛】Kaggle实战之特征工程篇-20大文本特征(下)
  3. Apache Hadoop 简单配置及实践
  4. 软件测试中条件覆盖,路径覆盖,语句覆盖,分支覆盖的区别
  5. LeetCode 1981. 最小化目标值与所选元素的差(DP)
  6. [Node.js] 模块化 -- path路径模块
  7. Android_(控件)使用自定义控件在屏幕中绘制一条虚线
  8. 大数据建模,eBay的一个牛人
  9. OpenvSwitch readme faq
  10. angular4自定义组件非input元素实现ngModel双向数据绑定(转载)
  11. Rulo扫地机器人app_扫地机器人扫不干净 为什么我还推荐大家买?
  12. JavaSE基础——IO流详解(1)字节流和字符流
  13. 阿里云Flink SQL开发指南——字符串函数——REGEXP_REPLACE正则替换
  14. 年终将至,财务人如何做好数据分析?
  15. 抖音ai智能机器人挂机_抖音上最火的人工智能机器人--LUKA绘本阅读机器人
  16. matlab图像的读取和存储,二、Matlab图像的读取和存储
  17. FFmpeg 软编码h.264与H.265(从简到深)
  18. 珍藏版仅30M迷你版Microsoft Office(Win10可用)
  19. Ctrl+Z的相反快捷键(附最全AndroidStudio常用快捷键)
  20. Qt Creator实现动画效果(单个动画)

热门文章

  1. win10+ubuntu双系统引导修复
  2. Tampermonkey 油猴脚本,chrome插件
  3. 中小学创客教室建设,教育创客空间整体解决方案
  4. 麒麟系统安装打印机共享_国产操作系统麒麟——文档打印 解决方案
  5. 利用IPC$空连接进行入侵及防范的方法
  6. 手机哪个软件可以远程控制服务器,手机远程有什么功能?手机远程协助软件哪个好?...
  7. 简单计算机面试题库及答案_计算机面试常问问题及答案
  8. spss方差分析_SPSS双因素重复测量方差分析
  9. PHP开发之留言板项目的一般流程,PHP留言板小项目(大作业)
  10. 《LabVIEW FPGA开发宝典》第9章:利用树莓派Linux RT+FPGA PCIe实现国产化RIO