Giả sử chúng ta có một chuỗi S với n ký tự. Trên một trình soạn thảo văn bản, có một quy tắc kỳ lạ. Trình sửa từ của trình soạn thảo văn bản này hoạt động theo cách mà miễn là có hai nguyên âm liên tiếp trong từ, nó sẽ xóa nguyên âm đầu tiên trong một từ. Nếu không có hai nguyên âm liên tiếp trong từ thì được coi là đúng. Chúng tôi phải tìm từ sửa từ S. Ở đây các nguyên âm là 'a', 'e', 'i' 'o', 'u' và 'y'.
Vì vậy, nếu đầu vào giống như S ="kém", thì đầu ra sẽ là "por".
Các bước
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
n := size of S t := "aeiouy" for initialize i := 1, when i < n, update (increase i by 1), do: if S[i] is in t and S[i - 1] is in t, then: delete ith character from S (decrease i by 1) return S
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
#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; }
Đầu vào
"poor"
Đầu ra
por