乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范。从小白开始逐步掌握用编程解决问题。
PAT (Basic Level) Practice 1078 字符串压缩与解压
问题分析
- 题设要求按照给定的方式对字符串进行压缩,以及对给定压缩字符串按照约定进行解压。
- 关于如何压缩的方式, 题设已经给出, 所以仍然是模拟压缩的过程.
如何压缩
- 题设要求将连续重复的字符转为
{字符个数}{字符}的格式。
- 所以我们需要知道连续字符重复出现结束的位置以及出现的次数, 然后进行转换。
- 为此,我们记录当前重复出现的字符以及已经重复出现的次数。
- 然后在当前字符和记录的次数不一致时, 说明此时需要进行转换输出了, 输出已经记录的字符数目和字符。
- 需要注意处理最后一部分重复出现的字符(比如:
"aaacc"需要保证最后一部分字符"cc"也被压缩成"2c")。
如何解压
- 由于字符范围是英文字符和空格。所以出现数字的时候必然是提示重复次数。
- 于是解压时需要提取出数字部分组成重复次数, 然后提取数值部分后面的字符作为重复字符进行输出。
- 开始遍历前或输出上次重复出现字符后, 先初始化重复次数为0, 然后如果检查到当前字符为数字, 则重复次数更新为原值*10 + 当前数字
- 如果当前字符不是数字,