1 #include<iostream>
 2 #include<string>
 3 #include<vector>
 4 using namespace std;
 5 void jiema(string s)
 6 {
 7     cout << "解码之后为:" << endl;
 8     for(int i = 0; i < s.size(); i++)
 9     {
10         if(s[i + 1] == '*')
11         {
12             int j = i + 1;
13             int len = 0;
14             while(s[j + 1] >= 48 && s[j + 1] <= 57)
15             {
16                 len++;
17                 j = j + 1;
18             }
19             string temp = s.substr(i + 2, len);
20             int num = atoi(temp.c_str());
21             for(int k = 0; k < num; k++)
22             {
23                 cout << s[i];
24             }
25             i = j;
26         }
27         else
28         {
29             cout << s[i];
30
31         }
32     }
33 }34 void bianma(string s)
35 {
36     vector<char>A;
37     int p = 1;
38     int j = 0;
39     for(; j < s.size();)
40     {
41         while(s[j] == s[j + 1] && j < s.size())
42         {
43             p++;
44             j = j + 1;
45         }
46         if(p >= 4)
47         {
48             A.push_back(s[j]);
49             A.push_back('*');
50             A.push_back(p);
51             p = 1;
52             j = j + 1;
53         }
54         else if(p < 4)
55         {
56             for(int k = 0; k < p; k++)
57             {
58                 A.push_back(s[j]);
59             }
60             p = 1;
61             j = j + 1;
62         }
63     }
64     cout << "编码之后为:" << endl;
65     for(int b = 0; b < A.size(); b++)
66     {
67         if(A[b] >= 0 && A[b] <= 9)
68             cout << int(A[b]);
69         else
70             cout << A[b];
71     }
72     cout << endl;
73     cout << "压缩比为:" << endl;
74     double y = double(A.size()) / s.size();
75     cout << y << endl;
76 }
77 void main()
78 {
79     cout << "请输入代码:①代码中含有数字表示需要解码解压缩②代码中不含数字表示需要编码压缩" << endl;
80     string s;
81     for(; cin >> s;)
82     {
83         int i = 0;
84         for(; i < s.size(); i++)
85         {
86             if(s[i] >= 48 && s[i] <= 57) //解码
87             {
88                 jiema(s);
89                 break;
90             }
91         }
92         if(i == s.size())
93         {
94             bianma(s);
95         }
96     }
97 }

转载于:https://www.cnblogs.com/allenben/p/3633772.html

行程编码(atoi函数)相关推荐

  1. 编写实现atoi函数

    题目:给定一个字符串,要求转成整数,不允许使用atoi或者其它类似库函数. 方案:实现这个函数并不难,但是要考虑以下几个问题 1.考虑字符串为空指针的时候            2.考虑字符串为空串 ...

  2. C语言atoi()函数用法

    C语言atoi()函数用法 头文件:#include <stdlib.h> atoi() 函数用来将字符串转换成整数(int),其原型为: int atoi (const char * s ...

  3. atoi()函数定义

    原型:int  atoi (const  char  *nptr) 用法:#include  <stdlib.h> 功能:将字符串转换成整型数:atoi()会扫描参数nptr字符串,跳过前 ...

  4. C语言atoi()函数(字符串转整数int类型)(atol()转换为long)

    需包含头文件:C 标准库 - <stdlib.h> 文章目录 描述 声明 参数 返回值 实例 在windows VS上测试 20211206 用atoi转换long,发现溢出了 描述 C ...

  5. linux中atoi函数的实现 值得借鉴,【转】atoi()函数的实现

    atoi()函数的功能:将字符串转换成整型数:atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结果返回( ...

  6. C语言中atoi()函数的用法

    C语言中atoi()函数的用法 一.学习要点: 1.int atoi(const char *str)把参数str所指向的字符串转换为一个整数: 二.代码 #include<stdio.h> ...

  7. Linux下main函数带参数问题和atoi函数详解

    1.main函数带参数 基本格式:main(int argc,char * argv[]) argc参数保存命令行参数的个数,是整形变量 具体用法可有如下代码看下: a1.c: #include &l ...

  8. atoi函数_吊打面试官 | 腾讯经典考点写代码实现atoi函数

    点击蓝字关注我哦 以下是本期干货视频视频后还附有文字版本哦 ▼<腾讯经典考点-写代码实现atoi函数>▼ ps:请在WiFi环境下打开,如果有钱任性请随意 在腾讯面试时,经常会被问到如何用 ...

  9. C语言atoi()函数:将字符串转换成int(整数)和sprintf和memset

    atoi()函数 #include <stdio.h> #include <stdlib.h>int main () {int i;char buffer[256];print ...

  10. C atoi函数

    作用 atoi()函数将数字格式的字符串转换为整数类型.例如,将字符串1253124127转换成数字1253124127. 注意 首要注意 atoi函数可以转化如下这种字符串 1fdafhdjfhka ...

最新文章

  1. 如何在SAP Cloud for Customer自定义BO中创建访问控制
  2. 底层实现红黑树_stl map底层之红黑树插入步骤详解与代码实现 | 学步园
  3. Android官方开发文档Training系列课程中文版:OpenGL绘图之环境配置
  4. 怎样查询2021高考模拟成绩,2021年高三一模二模三模哪个成绩更接近高考成绩,看看网友是怎么评论...
  5. java开发实战经典
  6. Java网络编程之NIO编程(待补充)
  7. GitHub 免费开放开发者计划,增加系列新优势
  8. IDEA Java开发常用插件
  9. 2019蓝桥杯C++B组 年号字串;完全二叉树的权值
  10. Xception: DeepLearning with Depthwise Separable Convolutions2017Google【论文理解】
  11. 2022年上半年系统分析师上午真题及答案解析
  12. 微信小程序:宝宝起名神器
  13. 八皇后问题python_八皇后问题 Python实现
  14. 【19C】logmnr参考
  15. 电路设计中晶体和晶振的区别
  16. opengl 着色器
  17. Tiled创建六边形地图
  18. 银河麒麟踩坑笔记——打包QT程序
  19. Java day02:eclipse的部分快捷操作;单元测试;条件控制语句;补充的基础语法和代码小技巧
  20. 透彻理解“对数”概念及其在量化交易中的意义

热门文章

  1. 其实“自己就是一座宝藏”:如何改变一生的命运
  2. Android中的savedInstanceState
  3. java中的装箱及拆箱
  4. 第一次作业:基于Linux进程模型分析
  5. tomcat源码分析(一)从tomcat架构说起
  6. C++类中的枚举类型
  7. C++中的引用与指针的区别
  8. ArcGIS 9.3/9.3.1 客户端 API 更新信息--2009年5月
  9. jQuery源码研究分析学习笔记-静态方法和属性(10)
  10. 在ie中关于ajax请求获得数据缓存问题的解决办法