leetcode刷题笔记
题目描述:1456. 定长子串中元音的最大数目
oom:50%;" />
- 代码
static int IsVowel(char ch)
{
if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') {
return 1;
}
return 0;
}
static int Init(char* s, int k)
{
int i = 0;
int max = 0;
while (i < k) {
if (IsVowel(s[i])) {
max++;
}
i++;
}
return max;
}
static int process(char* s, int k, int max)
{
int temp = max;
int left = 0;
int right = k;
int len = strlen(s);
while (right < len) {
if (IsVowel(s[right])) {
temp++;
}
if (IsVowel(s[left])) {
temp--;
}
if (temp > max) {
max = temp;
}
left++;
right++;
}
return max;
}
int maxVowels(char * s, int k){
int len = strlen(s);
if (s == NULL || len < k) {
return 0;
}
int max = Init(s, k);
int res = process(s, k, max);
return res;
}
-
使用方法:滑动窗口法
此题通过阅题,很容易联想到滑动窗口法,时间复杂度O(n),虽然容易,但是写代码时应注意在滑动窗口初始化后,即Process函数时,将right设置为k,而不应该是k-1。
待优化:在条件判断时,应加入题目设置的最大长度