用户:
Asheep233查看:12 回复:17 评论:12 创建时间:2022-04-19T09:43:39
𝙲ℴ𝗌𝔦𝒹ₑ𝑟克星:ABCABCABCABC..............................
输出结果:A1B1C1A1B1C..........................
)
点赞0
评论
Technetium其实还可以稍微检索一下个数,在数据全不为数字的情况下跳过长度为1的项,可以保证这个算法相对稳定,即压缩后的长度不超过原本的长度
例:qqqqqwwwwertyui→q5w4ertyui
点赞1
评论
Tsxet1、限制性
必须要连续并且相同的数据,这种情况要想很普遍的话估计是要改单独译码或者转进制
而且你这是单字符诶,压缩能力和ZIP差了千倍(虽然你们用的基础算法都一样)
ZIP就像定义了一个函数,后面运用的话,直接套函数就可以了
2、能力性
限制要求几乎砍掉了超多数据,那压缩还有没有用呢?如果按照你的方法一个字符串都要配一个数字的话,程序反而会更加长。
ZIP也只对3字符串以上的重复数据进行压缩处理。
3、读取性
你这是怎么读取的呢?比如:1112到底是什么意思呢?
是 1 112 表示 112个1
还是1 1 1 2 表示1个1 和 2个1
呢?即使有断点,断点是否也需要占用呢?
断点和ZIP的标记位也差不多,可是你的断点和Literal能比吗?
当然我分析的也不一定正确,如果有错误希望指正。
点赞1
评论
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char *argv[]) {
string n;
cin>>n;
int cnt = 1;
for(int i = 0;i<n.size();i++){
if(n[i] == n[i+1]){
cnt++;
}
else{
if(cnt>1){
cout<<n[i]<<cnt;
}
else{
cout<<n[i];
}
cnt =1;
}
}
}点赞0
评论