Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

บีบอัดสตริงใน C++


สมมติว่าเรามีสตริง s เราต้องลบอักขระที่ซ้ำกันที่ต่อเนื่องกันออกจากสตริงที่กำหนดและส่งคืน ดังนั้น หากรายการมีอักขระซ้ำติดต่อกัน ควรแทนที่ด้วยอักขระตัวเดียว ลำดับขององค์ประกอบจะเหมือนเดิม

ดังนั้น หากอินพุตเป็นแบบ "heeeelllllllloooooo" ผลลัพธ์จะเป็น "helo"

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ret :=สตริงว่าง

  • สำหรับการเริ่มต้น i :=0 เมื่อ i

    • ถ้าขนาดของ ret ไม่ใช่ศูนย์และองค์ประกอบสุดท้ายของ ret เท่ากับ s[i] ดังนั้น −

      • ละเว้นส่วนต่อไปนี้ ข้ามไปยังการทำซ้ำถัดไป

    • ret :=ret ต่อกัน s[i]

  • รีเทิร์น

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

#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