leetcode 443. ???????????????(String Compression)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 443. ???????????????(String Compression)相关的知识,希望对你有一定的参考价值。

???????????????   com   size   res   ref   str   ??????   int   ????????????   

???????????????

??????????????????????????????????????????????????????

???????????????????????????????????????????????????????????????

???????????????????????????????????????1 ?????????????????? int ??????????????????

??????????????????????????????????????????????????????????????????

?????? 1???

?????????
    ["a","a","b","b","c","c","c"]

?????????
    ??????6?????????????????????6?????????????????????["a","2","b","2","c","3"]

?????????
    "aa"???"a2"?????????"bb"???"b2"?????????"ccc"???"c3"?????????

?????? 2???

?????????
    ["a"]

?????????
    ??????1?????????????????????1?????????????????????["a"]

?????????
    ?????????????????????????????????

?????? 3???

?????????
    ["a","b","b","b","b","b","b","b","b","b","b","b","b"]

?????????
    ??????4?????????????????????4?????????????????????["a","b","1","2"]???

?????????
    ????????????"a"????????????????????????????????????"bbbbbbbbbbbb"??????b12????????????
    ?????????????????????????????????????????????????????????

?????????

??????????????????O(1) ?????????????????????

?????????

  1. ????????????????????????ASCII??????[35, 126]????????????
  2. 1 <= len(chars) <= 1000???

?????????

class Solution {
public:
    string toString(int num){
        string res = "";
        if(num == 0){
            return "0";
        }else{
            while(num != 0){
                res = char(num%10 + '0') + res;
                num /= 10;
            }
            return res;
        }
    }
    
    int compress(vector<char>& chars) {
        int sz = chars.size();
        
        int i = 0, j = 0, idx = 0;
        while(i < sz){
            while(j < sz && chars[j] == chars[i]){
                j++;
            }
            int num = j - i;
            chars[idx++] = chars[i];
            if(num != 1){
                string _num = toString(num);
                for(char ch : _num){
                    chars[idx++] = ch;
                }
            }
            i = j;
        }
        return idx;
    }
};

以上是关于leetcode 443. ???????????????(String Compression)的主要内容,如果未能解决你的问题,请参考以下文章

443. String Compression - LeetCode

leetcode443. String Compression

leetcode 443. ???????????????(String Compression)

Leetcode 443 String Compression

LeetCode 443 压缩字符串[双指针] HERODING的LeetCode之路

LeetCode443-压缩字符串(双索引)