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++的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28pyqt 怎么打包整个项目-icode9专业技术文章分享
- 2024-09-28laravel Commands 创建带有参数的 Artisan 命令的步骤和示例-icode9专业技术文章分享
- 2024-09-28antd怎么实现渲染tiff图片-icode9专业技术文章分享
- 2024-09-28英文半角中划线和中文全角的中划线有什么区别-icode9专业技术文章分享
- 2024-09-28nvm npm 和node 他们之间有什么关系-icode9专业技术文章分享
- 2024-09-28Node Version Manager (nvm)使用教程-icode9专业技术文章分享
- 2024-09-28nvm命令太慢,是什么原因-icode9专业技术文章分享
- 2024-09-28Kotlin 如何增加、删除和修改 MutableStateFlow 中的值。-icode9专业技术文章分享
- 2024-09-28Kotlin的stateFlow.update 写法介绍-icode9专业技术文章分享
- 2024-09-28kotlin 怎么获取当前时间格式-icode9专业技术文章分享