毎日の質問のリートコード文字列圧縮

トピックは単純ですが、記録する必要があります

件名:https : //leetcode-cn.com/problems/compress-string-lcci/

class Solution {
public:
    string compressString(string S) {
        int len=S.length();
        if (len==0) return S;
        string res="";
    
        char c=S[0];
        int cnt=1;
        for (int i=1;i<len;i++)
        if (S[i]==c){
            cnt++;
        }
        else{
            res+=c+to_string(cnt);
            cnt=1;
            c=S[i];
        }
        res+=c+to_string(cnt);
        if (res.length()<len) return res;
        else return S;
    }
};

ここにポイントがあります、私がメモリ制限を超えたエラーがあった最初の2つの提出

その理由は、res + = c + to_string(cnt);をres = res + c + to_string(cnt);と書いたためです。

ここでは自分で説明しますが、「=」の右側の計算結果は一時スペースにあるため、正しいかどうかわかりません。そのため、右側に大きな計算結果を直接置くと、この一時スペースを超える場合があります。したがって、「+ =」を使用します

ただし、加算などを使用すると問題が発生します。つまり、文字列 "+"演算子の左右のオペランドの1つは文字列型でなければなりませんが、文字を追加することはできません(char型の文字しか使用できません)。

https://blog.csdn.net/liuchuo/article/details/51994235と私に思い出させるためのコメントに感謝します

おすすめ

転載: blog.csdn.net/hbhhhxs/article/details/104906850