输入一个字符串,输出简单的压缩

1)单字符串压缩 :
输入:ABBBCCD , 输出AB3C2D
2)多字符串压缩
输入:AABCABCD,输出A(ABC)2D
1)压缩单个字符
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
string func(string data){
int pre = data[];
for(int i=;i<(int)data.size();i++){
cout << "find:"<<data[i]<<endl;
char temp = data[i];
if(temp == pre){
int pos = i;
data[pos]='';
cout << "same"<<endl;
temp = data[++i];
while(temp == pre){
data[pos]++;
temp = data[(++i)];
}
i=pos;
data.erase(pos+,(data[pos]-'')-);
}
pre = data[i];
}
return data;
}
int main(){
string result; string s="xxxxxxxyyyyyyz";
result = func(s);
cout << result <<endl;
return ;
}

转一个别人的做法感觉比我的做法好

void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr){
// 安全检查
assert((pInputStr != NULL) && (pOutputStr != NULL));
char mark = *pInputStr;
int count = ;
long j = ; // 压缩之后的str的下标
for (long i = ; i <= lInputLen; i ++){
// 判断是否一样
if (i < lInputLen && mark == pInputStr[i]){
count++;
}
else
{
if (count > ){
//zip str
pOutputStr[j] = count;
pOutputStr[++j] = mark;
j ++;
count = ;
}
else // if (count == 1){
pOutputStr[j] = mark;
j++;
}
mark = pInputStr[i];
}
}
}

2)压缩字符串

第二个没啥思路啊

#include <iostream>#include <vector>#include <algorithm>#include <string>using namespace std;//1 2 3 4 5 1000 2//一个字符串,找最长无重复字母子串.string func(string data){    int pre = data[0];    for(int i=1;i<(int)data.size();i++){        cout << "find:"<<data[i]<<endl;        char temp = data[i];        if(temp == pre){            int pos = i;            data[pos]='2';            cout << "same"<<endl;            temp = data[++i];            while(temp == pre){                data[pos]++;                temp = data[(++i)];            }            i=pos;            data.erase(pos+1,(data[pos]-'0')-2);        }        pre = data[i];    }    return data;}int main(){    string result;
    string s="xxxxxxxyyyyyyz";    result = func(s);    //result.erase(2);    cout << result <<endl;    return 0;}

【练习题】proj2 字符串压缩的更多相关文章

  1. 基于Zlib算法的流压缩、字符串压缩源码

    原文:基于Zlib算法的流压缩.字符串压缩源码 Zlib.net官方源码demo中提供了压缩文件的源码算法.处于项目研发的需要,我需要对内存流进行压缩,由于zlib.net并无相关文字帮助只能自己看源 ...

  2. php字符串压缩

    在PHP中偶尔遇到字符串的压缩,比如一个长字符串,数据库开始设计的字段存不下,但是又不想改数据库字段存储长度,就可以用压缩的方式降低数据字段字符串的长度数量级,把几百个字符的字符串压缩到几十个字符.总 ...

  3. 字符串压缩 stringZip

    1,题目描述 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串.压缩规则:1. 仅压缩连续重复出现的字符.比如字符串 ...

  4. ruby直接字符串压缩与解压缩

    ruby2.1.3的核心类中包含了Zlib库,其中的Zlib模块包含了对字符串压缩和解压的方法: irb(main):180:0> Zlib.class => Module irb(mai ...

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

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

  6. C# 使用GZip对字符串压缩和解压

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

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

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

  8. CC05:基本字符串压缩

    题目 利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能.比如,字符串"aabcccccaaa"经压缩会变成"a2b1c5a3".若压缩后的字符串没 ...

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

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

随机推荐

  1. C#代码实现矢量画图

    原文:C#代码实现矢量画图 版权声明:本文为博主原创文章,转载请附上链接地址. https://blog.csdn.net/ld15102891672/article/details/80275969 ...

  2. Ubuntu logomaker sh: 1: pngtopnm: not found 解决方案

    暂时未找到logomaker的方法,来解决 命令替换,在文件夹: pngtopnm open_show.png > temp.ppm ppmquant 224 temp.ppm >temp ...

  3. 【Linux计划】XSI IPC

    三种IPC这就是所谓的XSI IPC,每间: 消息队列 信号量 共享存储器 以下分别介绍三种IPC的使用方法. 1.消息队列 消息队列是消息的链接表,具有例如以下函数接口: msgget:创建一个新队 ...

  4. Android正在使用Handler实现消息分发机制(零)

    演讲前,AsyncTask文章.我们在最后谈到.AsyncTask它是利用Handler异步消息处理机制,操作结果.使用Message回到主线程,从而执行UI更新线程. 而在我们的日常开发工作,Han ...

  5. C++学习笔记27,虚函数作品

    C++它指定虚函数的行为,但实现的作者编译器. 通常,编译器处理虚函数的方法是给每个对象加入一个隐藏成员.隐藏成员中保存了一个指向函数地址数组的指针. 这个数组称为虚函数表(virtual funct ...

  6. abp框架(aspnetboilerplate)扩展系统表

    以OrganizationUnit为例,进行扩展,加入IsUse属性 1.创建一个新类,比如ExtendedOrganizationUnit,继承OrganizationUnit public cla ...

  7. jquery 复选框操作-prop()的使用

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  8. 解决Android Studio运行时报Error:java.lang.NullPointerException (no error message)错误

    原文:解决Android Studio运行时报Error:java.lang.NullPointerException (no error message)错误                    ...

  9. 为什么腾讯总能做出好产品?(在互联网行业,往往仅凭一个关键产品就足以改变整个公司的格局)MSN失败在不以用户体验为中心

    投递人 itwriter 发布于 2017-07-10 11:16 评论(36) 有3401人阅读 原文链接 [收藏] « » 本文来自微信公众号“郑志昊 Peter”,作者李翔.郑志昊:博客园经授权 ...

  10. WPF属性(一)依赖属性

    原文:WPF属性(一)依赖属性 依赖属性是一种可以自己没有值,并能通过使用Binding从数据源获得值的属性,拥有依赖属性的对象称为依赖对象,在传统开发中,一个对象所占用的内存在调用new操作符进行实 ...