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

Compress String in C++


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

เช่น หากอินพุตคือ "heeeeelllllllloooooo" ผลลัพธ์จะเป็น "helo"

ขั้นตอนการแก้ปัญหา

  • สร้างสตริง ret ว่าง
  • วนลูปอ่านตัวอักษรใน s:
    • ถ้า ret ไม่ว่างและตัวอักษรสุดท้ายของ ret เท่ากับ s[i]: ข้าม (continue)
    • เพิ่ม s[i] ต่อท้าย ret
  • คืนค่า 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