定長(zhǎng)子串中元音的最大數(shù)目

題目:

給你字符串 s 和整數(shù) k 。
請(qǐng)返回字符串 s 中長(zhǎng)度為 k 的單個(gè)子字符串中可能包含的最大元音字母數(shù)。
英文中的 元音字母 為(a, e, i, o, u)。

示例:

輸入:s = "abciiidef", k = 3
輸出:3
解釋?zhuān)鹤幼址?"iii" 包含 3 個(gè)元音字母。

解題方法:

滑窗法,統(tǒng)計(jì)加入窗內(nèi)和移到窗外的元音數(shù)量,獲得當(dāng)前窗內(nèi)元音數(shù)量,然后再根據(jù)當(dāng)前元音數(shù)量更新最大值。
與以往實(shí)現(xiàn)不同的是,在循環(huán)中利用一個(gè)統(tǒng)計(jì)長(zhǎng)度的變量來(lái)判斷是滑窗還是向窗內(nèi)添加數(shù)據(jù),這種實(shí)現(xiàn)方法的好處就是代碼寫(xiě)起來(lái)很簡(jiǎn)潔,也算是一種提升吧。

代碼和結(jié)果:

class Solution {
public:
    int check(char c)
    {
        if(c=='a'||c=='e'||c=='i'||c=='o'||c=='u')
            return 1;
        else
            return 0;
    }
    int maxVowels(string s, int k)     {
        int cnt=0;
        int sz=0;
        int maxv=0;
        for(int i=0;i<s.size();i++)
        {
            if(sz>=k)
            {
                cnt-=check(s[i-k]);
                cnt+=check(s[i]);
            }
            else
            {
                cnt+=check(s[i]);
                sz++;
            }
            maxv=maxv>cnt?maxv:cnt;
        }
        return maxv;
    }
};

運(yùn)行結(jié)果:

原題鏈接:https://leetcode-cn.com/problems/maximum-number-of-vowels-in-a-substring-of-given-length/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容