Mô tả bài toán
Cho chuỗi S. Quy tắc: nếu có hai nguyên âm liên tiếp, xóa nguyên âm đầu tiên. Lặp lại cho đến khi không còn cặp nguyên âm liên tiếp. Nguyên âm: a, e, i, o, u, y.
Ví dụ
S = "poor" → "oo" là cặp nguyên âm → xóa 'o' đầu → "por".
Thuật toán
Duyệt chuỗi từ trái sang phải, nếu S[i] và S[i-1] đều là nguyên âm thì xóa S[i] (hoặc S[i-1] tùy triển khai). Ở đây xóa S[i] và giảm i để kiểm tra lại.
Code C++
#include <bits/stdc++.h>
using namespace std;
string solve(string S) {
string vowels = "aeiouy";
for (int i = 1; i < (int)S.size(); i++) {
if (vowels.find(S[i]) != string::npos && vowels.find(S[i-1]) != string::npos) {
S.erase(i, 1);
i--;
}
}
return S;
}
int main() {
string S = "poor";
cout << solve(S) << endl;
return 0;
}
Đầu vào / Đầu ra
Input: "poor"
Output: "por"