สมมติว่าเรามีสตริง 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