C++ 中壓縮字串


假設我們有一個字串 s,我們需要刪除給定字串中的連續重複字元並將其返回。因此,如果一個列表包含連續的重複字元,則它們應該替換為一個字元的單一副本。元素的順序要與之前相同。

所以,如果輸入類似於“heeeeelllllllloooooo”,那麼輸出將是“helo”

為了解決這個問題,我們將按照以下步驟進行 -

  • ret := 一個空字串

  • 對於初始化 i := 0,當 i < s 的長度時,更新(將 i 增加 1),執行 -

    • 如果 ret 的長度不為零並且 ret 的最後一個元素與 s[i] 相同,則 -

      • 忽略以下部分,跳到下一次迭代

    • ret := ret 連線 s[i]

  • 返回 ret

讓我們看看下面的實現以獲得更好的理解 -

示例

 即時演示

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   string solve(string s) {
      string ret = "";
      for(int i = 0; i < s.size(); i++){
         if(ret.size() && ret.back() == s[i]){
            continue;
         }
         ret += s[i];
      }
      return ret;
   }
};
int main(){
   Solution ob;
   cout << (ob.solve("heeeeelllllllloooooo"));
}

輸入

"heeeeelllllllloooooo"

輸出

helo

更新於: 02-Sep-2020

3K+ 檢視

開始您的職業生涯

完成課程以獲得認證

入門
廣告
© . All rights reserved.