Implement a method to perform basic string compression using the counts of repeated characters.
eg: aabcccccaaa -----> a2b1c5a3
如果压缩后的字符串不比原来的字符串小,那么返回原来的字符串。
#include<iostream>
#include<string>
#include <bitset>
using namespace std;
string compress(string s) {
string res;
if (s.size() == 0) {
return res;
}
int cnt = 1;
for (int i = 1; i < s.size(); i++) {
if (s[i] == s[i-1]) {
cnt++;
} else {
res +=to_string(cnt) + to_string(s[i]-'0');
cnt = 1;
}
}
if (s.size() > 1 && s[s.size()-1]==s[s.size()-2]) {
res += to_string(s[s.size()-1] -'0') + to_string(cnt);
}
return res.size()<s.size()?res:s;
}
int main() {
string s = "aabcccccaaa";
string s1 = "abcd";
cout<<compress(s)<<endl;
cout<<compress(s1)<<endl;
return 0;
}
本文介绍了一种基本的字符串压缩算法,该算法通过计算连续字符出现的次数来减少字符串的长度。如果压缩后的字符串长度未小于原始字符串,则返回原始字符串。文章包含了一个C++实现示例,演示了如何进行字符串压缩。

被折叠的 条评论
为什么被折叠?



