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