在 C++ 中压缩字符串

c++server side programmingprogramming更新于 2024/9/1 17:39:00

假设我们有一个字符串 s,我们必须从给定的字符串中消除连续的重复字符并返回它。因此,如果列表包含连续重复的字符,则应将其替换为该字符的单个副本。元素的顺序将与以前相同。

因此,如果输入为"heeeeelllllllloooooo",则输出将为"helo"

为了解决这个问题,我们将遵循以下步骤 −

  • ret := 一个空白字符串

  • 用于初始化 i := 0,当 i < s 的大小,更新(将 i 增加 1),执行 −

    • 如果 ret 的大小非零,并且 ret 的最后一个元素与 s[i] 相同,则 −

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

    • ret := ret 连接 s[i]

  • return 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

相关文章