其他分享
首页 > 其他分享> > 面试题 01.06. 字符串压缩

面试题 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