面试题 01.06. 字符串压缩
作者:互联网
面试题 01.06. 字符串压缩
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。
示例1:
输入:"aabcccccaaa"
输出:"a2b1c5a3"
示例2:
输入:"abbccd"
输出:"abbccd"
解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。
class Solution {
public:
string compressString(string S) {
// unordered_map<char, int> map;
// for(int i = 0; i < S.size(); ++i){
// ++map[S[i]];
// }
// string result = "";
// for(auto it = map.begin(); it != map.end(); ++it){
// result += it->first;
// result += it->second;
// }
// return result;
string result = "";
char pre = S[0];
int count = 1;
for(int i = 1; i < S.size(); ++i){
if(S[i] == pre){
++count;
} else {
result += pre + to_string(count);
pre = S[i];
count = 1;
}
}
//最后相同的
result += pre + to_string(count);
return result.size() >= S.size() ? S : result;
}
};
标签:pre,map,面试题,string,++,result,01.06,字符串 来源: https://blog.csdn.net/weixin_43599304/article/details/120633316