主函数接收下第一个字符,接着一个分支就转到两个函数中的一个

1.压缩简单,只要与下一个一样就只计数,如果不同了就直接输出

2.至于解压不知道数字是几位数,所以我直接用了sscanf,然后判断是几位数字,将指针知道后面的内容字符输出

  1. #include<cstdio>
  2. #include<string.h>
  3. #include<algorithm>
  4. #include<ctype.h>
  5. using namespace std;
  6. char str[2000]={'\0'};
  7. int len;
  8. void compress(){
  9. int num=0;
  10. for(int i=0;i<len;i++){
  11. if(str[i]==str[i+1]) num++;
  12. else{
  13. if(num==0)printf("%c",str[i]);
  14. else{
  15. printf("%d%c",num+1,str[i]);
  16. num=0;
  17. }
  18. }
  19. }
  20. }
  21. void Decompress(){
  22. int i=0;
  23. while(i<len){
  24. int temp=0;
  25. if(isdigit(str[i])) sscanf(&str[i],"%d",&temp);
  26. if(temp==0){
  27. printf("%c",str[i]);
  28. }else{
  29. if(temp/10==0) i+=1;
  30. else if(temp/100==0) i+=2;
  31. else if(temp/1000==0) i+=3;
  32. for(int j=0;j<temp;j++){
  33. printf("%c",str[i]);
  34. }
  35. }
  36. i++;
  37. }
  38. }
  39. int main(){
  40. char A;scanf("%c",&A);
  41. getchar();
  42. scanf("%[^\n]",str);
  43. len=strlen(str);
  44. if(A=='C') compress();
  45. else if(A=='D') Decompress();
  46. return 0;
  47. }

【PAT】B1078 字符串压缩与解压(20 分)的更多相关文章

  1. PAT (Basic Level) Practice (中文)1078 字符串压缩与解压 (20 分) 凌宸1642

    PAT (Basic Level) Practice (中文)1078 字符串压缩与解压 (20 分) 凌宸1642 题目描述: 文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一 ...

  2. PAT Basic 1078 字符串压缩与解压 (20 分)

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

  3. 1078 字符串压缩与解压 (20分)C语言

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

  4. PAT 1078 字符串压缩与解压(20)(代码+思路)

    1078 字符串压缩与解压(20 分) 文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示.例如 ccccc 就用 5c 来表 ...

  5. PAT 乙级 1078 字符串压缩与解压 (20)

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

  6. PAT 1078 字符串压缩与解压

    https://pintia.cn/problem-sets/994805260223102976/problems/994805262018265088 文本压缩有很多种方法,这里我们只考虑最简单的 ...

  7. P1078 字符串压缩与解压

    P1078 字符串压缩与解压 转跳点:

  8. PAT(B) 1078 字符串压缩与解压(Java)

    题目链接:1078 字符串压缩与解压 (20 point(s)) 题目描述 文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示 ...

  9. 记录新项目中遇到的技术及自己忘记的技术点【DES加密解密,MD5加密,字符串压缩、解压,字符串截取等操作】

    一.DES加密.解密 #region DES加密解密 /// <summary> /// 进行DES加密 /// </summary> /// <param name=& ...

随机推荐

  1. log4j学习总结

    一直使用log4j来记录日志,但是一直以来没有深入研究过log4j,最近研究了下log4j,下面总结一下: log4j配置: 1. 配置根Logger,其语法为: log4j.rootLogger = ...

  2. MD5加密之提取文件的MD5特征码

    public static String encodeFile(String path) { try { MessageDigest digester = MessageDigest.getInsta ...

  3. SQL 必知必会·笔记<8>分组数据

    1. 使用GROUP BY子句创建分组 示例: SELECT vend_id, COUNT(*) AS num_prods FROM Products GROUP BY vend_id; 注意 GRO ...

  4. AWS DevOps – 配合Jenkins和CodeDeploy实现代码自动化部署

    AWS DevOps – 配合Jenkins和CodeDeploy实现代码自动化部署 Amazon ElastiCache 连接至 Redis 节点 通过 AWS Command Line Inter ...

  5. 面试:C++观察者模式实现

    #include <list> class Subject; class Observer{ public: virtual ~Observer(){}; virtual void upd ...

  6. 【精解】EOS TPS 多维实测

    本文主要研究EOS的tps表现,会从插件.cleos.EOSBenchTool以及eosjs四种方式进行分析研究. 关键字:eos, tps, cleos, txn_test_gen_plugin, ...

  7. leetcode — reverse-nodes-in-k-group

    /** * Source : https://oj.leetcode.com/problems/reverse-nodes-in-k-group/ * * Created by lverpeng on ...

  8. 理解交叉熵(cross_entropy)作为损失函数在神经网络中的作用

    交叉熵的作用 通过神经网络解决多分类问题时,最常用的一种方式就是在最后一层设置n个输出节点,无论在浅层神经网络还是在CNN中都是如此,比如,在AlexNet中最后的输出层有1000个节点: 而即便是R ...

  9. PHP正则表达式修饰符的种类及介绍

    ◆i :如果在修饰符中加上"i",则正则将会取消大小写敏感性,即"a"和"A" 是一样的.◆m:默认的正则开始"^"和结 ...

  10. shell的编程结构体(函数、条件结构、循环结构)

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 1.1 shell函数 在shell中,函数可以被当作命令一样 ...