(python3)1078. 字符串压缩与解压 (20分)——2017-12考题
来源:互联网 发布:防狼喷雾剂 淘宝 编辑:程序博客网 时间:2024/06/05 06:18
题目赘述:
本题需要你根据压缩或解压的要求,对给定字符串进行处理。这里我们简单地假设原始字符串是完全由英文字母和空格组成的非空字符串。
输入格式:
输入第一行给出一个字符,如果是 C 就表示下面的字符串需要被压缩;如果是 D 就表示下面的字符串需要被解压。第二行给出需要被压缩或解压的不超过1000个字符的字符串,以回车结尾。题目保证字符重复个数在整型范围内,且输出文件不超过1MB。
输出格式:
根据要求压缩或解压字符串,并在一行中输出结果。
输入样例 1:CTTTTThhiiiis isssss a tesssst CAaaa as输出样例 1:
5T2h4is i5s a3 te4st CA3a as输入样例 2:
D5T2h4is i5s a3 te4st CA3a as10Z输出样例 2:
TTTTThhiiiis isssss a tesssst CAaaa asZZZZZZZZZZ题目解析:
题目不难,对字符串的处理问题。首先一定是分两种情况。。
看如下解答,感觉可读性还不错。
压缩的思路是寻找连续相同的字符,输出“计数”“字符”,计数为1时省略数字,重点是如何使遍历过程不重复、不遗漏,对于i 的操作尤为关键;
解压的思路是找数字及其后的字符,没有数字直接copy,难点仍是遍历过程,且数字可能是一位数到三位数。
pro = input()string = input()n = len(string)ans="" # 输出结果if pro == "C": # 压缩 i = 0 while i < n: # 从i 开始寻找连续相同的字符,计数为con j = i+1 con = 1 while j < n and string[j]== string[i]: con += 1 j += 1 if con == 1: # 计数为1 则直接加到ans ans = ans + string[i] else: new = "%d%s" % (con, string[i]) ans = ans + new i = j # i 定位到下一个字符else: # 解压 i=0 while i < n: j = i + 1 if string[i].isdigit(): # 从i 开始寻找连续的数字字符,为数量num while string[j].isdigit(): j+=1 num = int(string[i:j]) new = string[j] * num ans = ans + new i = j + 1 else: # 若i 不为数字,直接添加到ans ans = ans + string[i] i = jprint(ans)
阅读全文
0 0
- (python3)1078. 字符串压缩与解压 (20分)——2017-12考题
- (python3)1077. 互评成绩计算 (20分)——2017-12考题
- (python3)1076. Wifi密码 (15分)——2017-12考题
- (python3)1080. MOOC期终成绩 (19分)——2017-12考题
- 1078. 字符串压缩与解压 (20)
- 1078. 字符串压缩与解压 (20)
- 1078. 字符串压缩与解压 (20)
- 1078. 字符串压缩与解压 (20) PAT乙级真题
- PAT 乙级 1078. 字符串压缩与解压 (20)
- 字符串的压缩与解压
- 压缩与解压1---字符串的压缩与解压
- 1078. 字符串压缩与解压(未拿满分)
- Linux常用命令——压缩与解压
- PAT (Basic Level) Practise (中文) 1078. 字符串压缩与解压 (20)
- C#—考题字符串2
- Java对字符串的压缩与解压
- IOS 压缩与解压字符串(文件) 操作
- 字符串压缩和解压
- spring中轻松实现定时任务,quartz表达式的在线Cron表达式生成器推荐
- 树形DP
- 反转链表
- jmeter CSVRead函数与csv配置元件的相对路径
- Python基础语法
- (python3)1078. 字符串压缩与解压 (20分)——2017-12考题
- 左侧交易和右侧交易的一些基本特征
- axure rp8.1 注册码
- wwww
- python_fullstack基础(三)-基本数据类型
- 决策树熵与python实现
- Slave_IO_Running: Connecting原因汇总
- bzoj2253 [2010 Beijing wc]纸箱堆叠(CDQ+dp)
- 决策树剪枝简单python实现