元音跳跃

问题描述

现在有一个长度为 nn 的字符串,都有小写字母组成。
输出最长的连续元音的长度

输入格式

第一行一个整数 nn , 0n1060\le n\le10^6
接下来一行表示字符串

输出格式

输出一行,一个数,代表答案

样例输入

10
aeioubaeio

样例输出

5
#include <bits/stdc++.h>
using namespace std;
#define ll long long
unordered_set<char> yuan_yin = {'a', 'e', 'i', 'o', 'u'};
inline bool check(const char& c) {
    return yuan_yin.find(c) != yuan_yin.end();
}

int main() {
    int n, t = 0, ans = 0;
    string s;
    cin >> n >> s;
    for (auto& i : s) {
        if (check(i))
            ++t;
        else
            ans = max(ans, t), t = 0;
    }
    cout << max(ans, t);
    return 0;
}

/*
//会TLE的写法
unordered_set<char> yuan_yin = {'a', 'e', 'i', 'o', 'u'};
string s;
inline bool check(const int& l, const int& r) {
    for (int i = l; i <= r; ++i)
        if (yuan_yin.find(s[i]) == yuan_yin.end())
            return false;
    return true;
}

int main() {
    int n, l = 0, r = 0, ans = 0, lastl = -1, lastr = -1;
    cin >> n >> s;
    while (l != lastl or r != lastr) {
        lastl = l, lastr = r;
        if (check(l, r)) {
            ans = max(ans, r - l + 1);
            if (r < n - 1)
                ++r;
        } else if (r < n - 1) {
            l = ++r;
        }
    }
    cout << ans;
    return 0;
}
*/