題目:
給你字符串 s 和整數(shù) k 。
請返回字符串 s 中長度為 k 的單個子字符串中可能包含的最大元音字母數(shù)县爬。
英文中的 元音字母 為(a, e, i, o, u)。
示例:
輸入:s = "abciiidef", k = 3
輸出:3
解釋:子字符串 "iii" 包含 3 個元音字母添谊。
解題方法:
滑窗法财喳,統(tǒng)計加入窗內(nèi)和移到窗外的元音數(shù)量,獲得當前窗內(nèi)元音數(shù)量斩狱,然后再根據(jù)當前元音數(shù)量更新最大值耳高。
與以往實現(xiàn)不同的是,在循環(huán)中利用一個統(tǒng)計長度的變量來判斷是滑窗還是向窗內(nèi)添加數(shù)據(jù)所踊,這種實現(xiàn)方法的好處就是代碼寫起來很簡潔泌枪,也算是一種提升吧。
代碼和結果:
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;
}
};
運行結果:原題鏈接:https://leetcode-cn.com/problems/maximum-number-of-vowels-in-a-substring-of-given-length/