PTA 1078 字符串压缩与解压 (20 分)

简介: 文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示。

题目


文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示。例如 ccccc 就用 5c 来表示。如果字符没有重复,就原样输出。例如 aba 压缩后仍然是 aba。


解压方法就是反过来,把形如 5c 这样的表示恢复为 ccccc。


本题需要你根据压缩或解压的要求,对给定字符串进行处理。这里我们简单地假设原始字符串是完全由英文字母和空格组成的非空字符串。


输入格式: 输入第一行给出一个字符,如果是 C 就表示下面的字符串需要被压缩;如果是 D 就表示下面的字符串需要被解压。第二行给出需要被压缩或解压的不超过 1000 个字符的字符串,以回车结尾。题目保证字符重复个数在整型范围内,且输出文件不超过 1MB。


输出格式: 根据要求压缩或解压字符串,并在一行中输出结果。


输入样例 1:
C
TTTTThhiiiis isssss a   tesssst CAaaa as
结尾无空行
输出样例 1:
5T2h4is i5s a3 te4st CA3a as
结尾无空行
输入样例 2:
D
5T2h4is i5s a3 te4st CA3a as10Z
结尾无空行
输出样例 2:
TTTTThhiiiis isssss a   tesssst CAaaa asZZZZZZZZZZ
结尾无空行

解题思路

type = input()
# type = "C"
# type = "D"
if type == "C":
    inputStr = input()
    # inputStr = "TTTTThhiiiis isssss a   tesssst CAaaa as"
    tempStr = inputStr[0]
    tempNum = 0
    res = ""
    for i in inputStr:
        if i == tempStr:
            tempNum += 1
        else:
            if tempNum == 1:
                res += tempStr
            else:
                res += str(tempNum)+tempStr
            tempStr = i
            tempNum = 1
    if tempNum == 1:
        res += tempStr
    else:
        res += str(tempNum) + tempStr
    print(res)
elif type == "D":
    inputStr = input()
    # inputStr = "5T2h4is i5s a3 te4st CA3a as10Z"
    tempStr = inputStr[0]
    tempNum = ""
    res = ""
    for i in inputStr:
        if i.isnumeric():
            tempNum += i
        else:
            tempStr = i
            if len(tempNum) == 0:
                res += tempStr
            else:
                res += tempStr*int(tempNum)
            tempNum = ""
    print(res)


目录
相关文章
|
7月前
|
C++ Python
哈夫曼编码实现文件的压缩和解压
哈夫曼编码实现文件的压缩和解压
105 0
|
9月前
成信大ENVI_IDL第三周课堂内容1:读取OMI数据(HDF5文件)以及输出+解析
成信大ENVI_IDL第三周课堂内容1:读取OMI数据(HDF5文件)以及输出+解析
115 0
|
8月前
|
算法 Linux Python
SGAT丨基于R语言tidyverse的vcf转txt文件算法,SNP位点判断与自动校正,染色体格式替换
SGAT丨基于R语言tidyverse的vcf转txt文件算法,SNP位点判断与自动校正,染色体格式替换
|
10月前
Leecode 面试题 01.06. 字符串压缩
Leecode 面试题 01.06. 字符串压缩
29 0
|
Java 程序员
批量压缩16万个文件夹为压缩包(.zip格式)
🍅程序员小王的博客:程序员小王的博客 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习路线:java自学的学习路线
198 0
批量压缩16万个文件夹为压缩包(.zip格式)
|
数据安全/隐私保护
亲测可行!!!将下载好的优酷文件kux格式转为MP4格式
亲测可行!!!将下载好的优酷文件kux格式转为MP4格式
亲测可行!!!将下载好的优酷文件kux格式转为MP4格式
|
Python
考点:深度拷贝、zip函数的压缩与解压包【Python习题06】
考点:深度拷贝、zip函数的压缩与解压包【Python习题06】
106 0
|
XML 存储 前端开发
跟着大佬学习大文件的切片上传,yyds
跟着大佬学习大文件的切片上传,yyds
L1-4 字符串压缩 (10 分)
编写一个程序,输入一个字符串,然后采用如下的规则对该字符串当中的每一个字符进行压缩: (1) 如果该字符是空格,则保留该字符; (2) 如果该字符是第一次出现或第三次出现或第六次出现,则保留该字符; (3) 否则,删除该字符。 例如,若用户输入“occurrence”,经过压缩后,字符c的第二次出现被删除,第一和第三次出现仍保留;字符r和e的第二次出现均被删除,因此最后的结果为:“ocurenc”。
80 0