Computer >> Máy Tính >  >> Lập trình >> C ++

Nén chuỗi trong C ++


Giả sử chúng ta có một chuỗi s, chúng ta phải loại bỏ các ký tự trùng lặp liên tiếp khỏi chuỗi đã cho và trả về nó. Vì vậy, nếu danh sách chứa các ký tự lặp lại liên tiếp, chúng nên được thay thế bằng một bản sao của ký tự. Thứ tự của các phần tử sẽ giống như trước.

Vì vậy, nếu đầu vào là "heeeeelllllllloooooo", thì đầu ra sẽ là "helo"

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • ret:=một chuỗi trống

  • để khởi tạo i:=0, khi i

    • nếu kích thước của ret khác 0 và phần tử cuối cùng của ret giống với s [i], thì -

      • Bỏ qua phần sau, chuyển sang phần tiếp theo

    • ret:=ret nối s [i]

  • trả lại ret

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

#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"));
}

Đầu vào

"heeeeelllllllloooooo"

Đầu ra

helo