Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Xóa nguyên âm kép trong chuỗi bằng C++

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"