Leetcode/LeetCode75

[Sliding Window][Medium] 1456. Maximum Number of Vowels in a Substring of Given Length

자전거통학 2023. 12. 5. 03:26

https://leetcode.com/problems/maximum-number-of-vowels-in-a-substring-of-given-length/description

 

Maximum Number of Vowels in a Substring of Given Length - LeetCode

Can you solve this real interview question? Maximum Number of Vowels in a Substring of Given Length - Given a string s and an integer k, return the maximum number of vowel letters in any substring of s with length k. Vowel letters in English are 'a', 'e',

leetcode.com

 

Q. s string 안에서 길이가 k인 모든 substring 중 그 안의 가능한 최대 모음의 개수를 반환하라.

 

Solution. 역시 전형적인 sliding window 문제. 이런 류의 문제풀이의 핵심중의 하나는 연산을 누적해서 계산해야 한다는 것이다. 즉 조건이 만족될때, 문제가 요구하는 것을 찾으려고 하면 중복 연산이 된다는 것이다. 

 이런 류의 복잡한 문제들이 계속 나올 것이므로, 여기서는 그냥 skip. 

 

 

int maxVowels(string s, int k)
{
    int left = 0;
    int cntVowl = 0;	// key.
    int ret = 0;
    for (int right = 0; right < s.length(); ++right)
    {
        char cur = s[right];
        if (cur == 'a' || cur == 'e' || cur == 'i' || cur == 'o' || cur == 'u')
            ++cntVowl;

        if (right - left + 1 == k)
        {
            ret = max(ret, cntVowl);
            cur = s[left++];
            if (cur == 'a' || cur == 'e' || cur == 'i' || cur == 'o' || cur == 'u')
                --cntVowl;
        }
    }
    return ret;