【LeetCode每日一題】字符串壓縮

字符串壓縮。利用字符重複出現的次數,編寫一種方法,實現基本的字符串壓縮功能。比如,字符串aabcccccaaa會變爲a2b1c5a3。若“壓縮”後的字符串沒有變短,則返回原先的字符串。你可以假設字符串中只包含大小寫英文字母(a至z)。

示例1:

輸入:“aabcccccaaa”
輸出:“a2b1c5a3”
示例2:

輸入:“abbccd”
輸出:“abbccd”
解釋:“abbccd"壓縮後爲"a1b2c2d1”,比原字符串長度更長。

提示:

字符串長度在[0, 50000]範圍內。

來源:力扣(LeetCode)

C++

class Solution {
public:
    string compressString(string S) {
        //transform(S.begin(), S.end(), S.begin(), ::tolower);
        int s = S.size();
        //小於等於1肯定直接返回原串
        if(s<=1){
            return S;
        }
        char c = S[0];
        //當前字符有幾個
        int num = 1;
        //初始化字符串爲第一個字符
        string res(1,c);
        for(int i=1;i<s;i++){
            if(S[i]!=c){
                //ostringstream os_;
                //os_ << num;
                //res.append(os_.str());
                res.append(to_string(num));
                //res.append(1,S[i]);
                res.push_back(S[i]);
                c = S[i];
                num = 0;
            }
            num++;
        }
        //最後一個字符有幾個
        if(num!=0){
            //ostringstream os_;
            //os_ << num;
            //res.append(os_.str());
            res.append(to_string(num));
        }
        //此處是大於等於,不是等於,注意
        if(res.size() >= s){
            return S;
        }
        return res;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章