proj2 字符串压缩
Posted ray5wang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了proj2 字符串压缩相关的知识,希望对你有一定的参考价值。
输入一个字符串,输出简单的压缩
#include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; 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); cout << result <<endl; return 0; }
转一个别人的做法感觉比我的做法好
void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr){ // 安全检查 assert((pInputStr != NULL) && (pOutputStr != NULL)); char mark = *pInputStr; int count = 0; long j = 0; // 压缩之后的str的下标 for (long i = 0; i <= lInputLen; i ++){ // 判断是否一样 if (i < lInputLen && mark == pInputStr[i]){ count++; } else { if (count > 1){ //zip str pOutputStr[j] = count; pOutputStr[++j] = mark; j ++; count = 1; } 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 字符串压缩的主要内容,如果未能解决你的问题,请参考以下文章