• PTA 乙级 1078 字符串压缩与解压 (20 分) C++


     这个题用C我是一个一个字符处理的

    有几个需要注意的点

    • 不管压缩还是解压,注意第一行输入的' '输入一定要处理,我是用了一个字符去存储(之后这个字符被清零了,用作接下来的数据的处理,重复利用)

    当需要压缩时

    我是记录当前字符和上一个字符,当上一个字符和当前字符不同时,则输出压缩后的字符

    • 当字符数为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 != '
    ') {                      //回车换行时结束
    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 != '
    ') {
    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 }

     

    默默地一点点变强,细节决定成败
  • 相关阅读:
    linux(6)查看进程ps命令
    Python 基础03 序列
    Python 基础02 基本数据类型
    Python基础01 Hello World!
    Linux vi/vim
    Laravel 的HTTP控制器
    Laravel 下的伪造跨站请求保护 CSRF#
    Linux 磁盘管理
    Linux 用户he用户组管理
    Linxu 用户和用户组管理1
  • 原文地址:https://www.cnblogs.com/SCP-514/p/15365244.html
Copyright © 2020-2023  润新知