字符串壓縮


題目描述

利用字符重復出現的次數,編寫一個方法,實現基本的字符串壓縮功能。比如,字符串“aabcccccaaa”經壓縮會變成“a2b1c5a3”。若壓縮后的字符串沒有變短,則返回原先的字符串。

給定一個string iniString為待壓縮的串(長度小於等於10000),保證串內字符均由大小寫英文字母組成,返回一個string,為所求的壓縮后或未變化的串。

測試樣例
"aabcccccaaa"
返回:"a2b1c5a3"
"welcometonowcoderrrrr"
返回:"welcometonowcoderrrrr"

解題思路:利用to_string函數和append進行計數器到目標壓縮串的轉換

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
//"welcometonowcoderrrrr"
//"w2e3l1c2o4m1t1n1d1r5",之前題意理解錯誤 
//"w1e1l1c1o1m1e1t1o1n1o1w1c1o1d1e1r5"題意所述 
class Zipper {
public:
    string zipString(string iniString) {
    string str;
    int i = 0,j = 0;
    while (i < iniString.length()){
        while (iniString[i] == iniString[j]) i++;
        str += iniString[j];
        str += to_string(i-j);
        j = i;//關鍵的一步,既保證了i-j是長度又滿足了上邊 while (iniString[i] == iniString[j]) i++;
            //繼續和后面進行比較是否相等 
        }
    if (iniString.length() < str.length()) return iniString;
    else return str;
    }
};
int main()
{
Zipper a;
cout<<a.zipString("welcometonowcoderrrrr");

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM