PTA 乙级 1078 字符串压缩与解压 (20 分) C++
2021/10/3 22:40:48
本文主要是介绍PTA 乙级 1078 字符串压缩与解压 (20 分) C++,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
这个题用C我是一个一个字符处理的
有几个需要注意的点
- 不管压缩还是解压,注意第一行输入的'\n'输入一定要处理,我是用了一个字符去存储(之后这个字符被清零了,用作接下来的数据的处理,重复利用)
当需要压缩时
我是记录当前字符和上一个字符,当上一个字符和当前字符不同时,则输出压缩后的字符
- 当字符数为1时不要输出1
- 注意首个字符的处理,此时上一个字符尚未初始化,要特殊处理
当需要解压时
- 也需要注意字符数为1的情况
C/C++
1 #include <iostream> 2 #include <string> 3 #include <stdlib.h> 4 #include <cmath> 5 6 using namespace std; 7 8 int main() { 9 char s, last, c; 10 int num = 0; 11 string sum = "0"; //一定要初始化,否则测试点2会有运行时错误 12 c = getchar(); 13 last = getchar(); //用于接收第一行输入结尾的空格 14 last = NULL; 15 if(c == 'C') { 16 while (last != '\n') { //回车换行时结束 17 s = getchar(); 18 if (s != last && last != NULL) { //字母变换时则输出(排除last还没值时的输入) 19 if (num == 1) cout << last; 20 else cout << num << last; 21 num = 0; 22 } 23 num++; 24 last = s; 25 } 26 } else if (c == 'D') { 27 while (last != '\n') { 28 s = getchar(); 29 if (!(s >= '0' && s <= '9')) { //若输入不为数字,此时输出字符 30 for (int i = 0; i < stoi(sum); ++i) { 31 cout << s; 32 } 33 if (sum == "0") cout << s; //处理只有一个字符的情况 34 sum = "0"; 35 num = 0; 36 } else if (s >= '0' && s <= '9') { //用字符串相加来处理输出字母个数大于10的情况 37 sum += s; 38 num++; 39 } 40 last = s; 41 } 42 } 43 return 0; 44 }
这篇关于PTA 乙级 1078 字符串压缩与解压 (20 分) C++的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-12深入理解 ECMAScript 2024 新特性:Map.groupBy() 分组操作
- 2025-01-11国产医疗级心电ECG采集处理模块
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势