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

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. 【转】ARRAYLIST VECTOR LINKEDLIST 区别与用法

    转自:http://www.cnblogs.com/mgod/archive/2007/08/05/844011.html ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实 ...

  2. 利用.net Core 对程序集中的类 进行统一依赖注入

    1.创建特性 用于标注依赖注入 using Microsoft.Extensions.DependencyInjection; using System; using System.Collectio ...

  3. iOS8的APP过渡过程

    1. 2. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWluX3hpYW53ZWk=/font/5a6L5L2T/fontsize/400/fill/ ...

  4. android4.0 USB Camera示例(四)CMOS

    上一页下一页说usb camera uvc标准 顺便说说CMOS一起做 操作基本一至, 前HAL在那里我已经提供了层CMOS相关接口 JNIEXPORT jint JNICALL Java_com_d ...

  5. crossplatform---Nodejs in Visual Studio Code 02.学习Nodejs

    1.开始 源码下载:https://github.com/sayar/NodeMVA 在线视频:https://mva.microsoft.com/en-US/training-courses/usi ...

  6. python 教程 第三章、 运算符与表达式

    第三章. 运算符与表达式 1)    运算符 + 加 - 减 * 乘 ** 幂 / 除 // 取整除 % 取模 << 左移 >> 右移 & 按位与 | 按位或 ^ 按位 ...

  7. WPF 走马灯 文字滚动 自定义控件

    原文:WPF 走马灯 文字滚动 自定义控件 /// <summary> /// Label走马灯自定义控件 /// </summary> [ToolboxBitmap(type ...

  8. (转)react 使用 ref 报错 ,[eslint] Using string literals in ref attributes is deprecated. (react/no-string-refs)

    原文地址:https://www.cnblogs.com/gangerdai/p/7396226.html react 项目中给指定元素加事件,使用到 react 的 ref 属性,Eslink 报错 ...

  9. WPF 页面切换效果

    原文:WPF 页面切换效果 最近做一个有页面切换的吧.. 我觉得这个功能是比较基础的吧.. 在网上百度了一下.. 用NavigationWindow的比较好.. 因为Demo中是带了淡入淡出的页面效果 ...

  10. 漫谈 JVM —— 内存模型、线程、锁

    Java 内存模型(JMM),实际上的目的就是为了统一内存管理.这让我想到了,作为一个程序员总是想着有银弹,有一个代码能万能的在所有场景上.经过多次尝试我发现这是不可能的:需求在变,技术在更新,没有什 ...