n개의 문자가 있는 문자열 S가 있다고 가정합니다. 텍스트 편집기에는 이상한 규칙이 있습니다. 이 텍스트 편집기의 단어 교정기는 단어에 두 개의 연속적인 모음이 있는 한 단어의 첫 번째 모음을 삭제하는 방식으로 작동합니다. 단어에 연속된 두 개의 모음이 없으면 올바른 것으로 간주됩니다. S에서 수정된 단어를 찾아야 합니다. 여기서 모음은 'a', 'e', 'i' 'o', 'u' 및 'y'입니다.
따라서 입력이 S ="poor"와 같으면 출력은 "por"이 됩니다.
단계
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
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
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
#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