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