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)


目录
相关文章
|
SQL 开发框架 Ubuntu
阿里云轻量应用服务器系统镜像和应用镜像区别及选择
阿里云轻量应用服务器可选应用镜像和系统镜像,应用镜像和系统镜像有什么如何?阿里云轻量应用服务器操作系统如何选择镜像?笔者分享阿里云轻量应用服务器应用镜像和系统镜像的区别及选择方法:
阿里云轻量应用服务器系统镜像和应用镜像区别及选择
|
监控 JavaScript 算法
如何使用内存监控工具来定位和解决Node.js应用中的性能问题?
总之,利用内存监控工具结合代码分析和业务理解,能够逐步定位和解决 Node.js 应用中的性能问题,提高应用的运行效率和稳定性。需要耐心和细致地进行排查和优化,不断提升应用的性能表现。
444 77
|
存储 监控 安全
邮件告警通知
【10月更文挑战第20天】
|
JSON JavaScript 前端开发
以太坊 – 部署智能合约到Ganache
将编译好的智能合约部署到本地的Ganache区块链网络。步骤如下:更新项目的配置文件,修改网络配置连接到本地区块链网络(Ganache)。创建迁移脚本,告诉Truffle如何部署智能合约。运行新创建的迁移脚本,部署智能合约。...
2305 0
以太坊 – 部署智能合约到Ganache
|
监控 安全 数据安全/隐私保护
确保数据安全与隐私保护的数据治理最佳实践
【8月更文第13天】随着数据成为企业最重要的资产之一,数据安全和隐私保护变得至关重要。本文将探讨数据治理中的一些最佳实践,并提供具体的代码示例来说明如何实施这些策略。
2556 4
|
XML 网络协议 机器人
ROS1 Noetic主从机通信使用详解
这篇文章详细介绍了在ROS1 Noetic环境下配置主从机通信的步骤,包括获取IP和主机名、设置`/etc/hosts`文件、配置ROS环境变量以及测试通信是否成功。同时,文章还提供了一些ROS环境变量的相关知识和参考资料链接。
975 0
|
存储 分布式计算 Hadoop
什么是HDFS?请解释其架构和工作原理。
什么是HDFS?请解释其架构和工作原理。
560 0
|
存储 人工智能 测试技术
【AI智能体】SuperAGI-开源AI Agent 管理平台
【4月更文挑战第9天】智能体管理平台SuperAGI简介及实践
1574 0
|
存储 数据采集 人工智能
数据资产管理技术与工具
数据资产管理技术与工具
|
传感器 大数据 物联网
【Flink】Flink 应用场景解析
【1月更文挑战第26天】【Flink】Flink 应用场景解析

热门文章

最新文章