• 最长的指定瑕疵度的元音子串 A


    思路:

    采用双指针方法遍历字符串;

    1)初始时左右边界指针都指向位置0;

    2)边界判断:左元音右缺陷(right++)、左缺陷右元音(left++)、左右都缺陷(left++、right++)、左右都元音(计算缺陷度);

    3)计算元音字串的长度:

        1. 先判断当前缺陷度是否满足要求,小于则right++,大于则left++;

        2. 缺陷度符合要求后,才计算当前字串长度,并和历史最大值比较,更新最大值。

    #include <iostream>
    #include <string>
    
    using namespace std;
    int GetLongestFlawedVowelSubstrLen(const size_t flaw, const string& input)
    {
        int element[128] = {0};
        element['a'] = 1;
        element['A'] = 1;
        element['e'] = 1;
        element['E'] = 1;
        element['i'] = 1;
        element['I'] = 1;
        element['o'] = 1;
        element['O'] = 1;
        element['u'] = 1;
        element['U'] = 1;
        int noeleCnt = 0;
        int length = input.length();
        int left = 0;
        int right = 0;
        int maxLen = 0;
        int currentLen = 0;
        while (right < length) {
            if (!element[input[right]]) {
                noeleCnt++;
                right++;
                continue;
            }
            while (!element[input[left]]) {
                noeleCnt--;
                left++;
            }
            if (noeleCnt == flaw) {
                currentLen = right - left + 1;
                maxLen = currentLen > maxLen ? currentLen : maxLen;
                right++;
            } else if (noeleCnt < flaw) {
                right++;
            } else if (noeleCnt > flaw) {
                while (element[input[left]] == 1) {
                    left++;
                }
                noeleCnt--;
                left++;
            }
        }
        return maxLen;
    }
    
    int main()
    {
        size_t flaw;
        cin >> flaw;
    
        string input;
        cin >> input;
    
        cout << GetLongestFlawedVowelSubstrLen(flaw, input) << endl;
        return 0;
    }
  • 相关阅读:
    Electio Time poj
    排列的字典序问题
    poj 2365
    编程中的命名设计那点事(转)
    编程命名中的7+1个提示(转)
    poj 1664 放苹果——递归
    再论字典序
    poj 3618
    sort用法
    poj 1088
  • 原文地址:https://www.cnblogs.com/gcter/p/15851895.html
Copyright © 2020-2023  润新知