สมมติว่าเรามีสตริง S ที่มี n ตัวอักษร บนเครื่องแก้ไขข้อความมีกฎแปลก ตัวแก้ไขคำทำงานโดยที่ตราบใดที่ยังมีสระสองตัวติดกันในคำ มันจะลบสระตัวแรกในคำ ถ้าไม่มีสระติดกันแล้ว ถือว่าถูกต้อง เราต้องหาคำที่แก้ไขแล้วจาก S สระคือ 'a', 'e', 'i', 'o', 'u' และ 'y'
เช่น ถ้าอินพุตคือ S = "poor" เอาต์พุตจะเป็น "por"
ขั้นตอนการแก้ปัญหา
n := ขนาดของ S
t := "aeiouy"
for i := 1 ถึง n-1:
if S[i] อยู่ใน t และ S[i-1] อยู่ใน t:
ลบตัวอักษรที่ i จาก S
(ลด i ลง 1)
return S
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
string solve(string S) {
int n = S.size();
string t = "aeiouy";
for (int i = 1; i < n; i++) {
if (t.find(S[i]) != -1 && t.find(S[i-1]) != -1) {
S.erase(i, 1);
i--;
}
}
return S;
}
int main() {
string S = "poor";
cout << solve(S) << endl;
}
อินพุต
"poor"
เอาต์พุต
por