1456.定长子串中元音的最大数目

简介: 1456.定长子串中元音的最大数目

题目:给你字符串 s 和整数 k 。

请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。

英文中的 元音字母 为(a, e, i, o, u)。

             

解题思路:

1.右侧新进入窗口的字母为元音字母,左侧移出窗口的字母也是元音字母,这样一进一出抵消了。

2.右侧新进入窗口的字母为元音字母,左侧移出窗口的字母非元音字母,此时元音字母个数+1

3.右侧新进入窗口的字母非元音字母,左侧移出窗口的字母为元音字母,此时元音字母个数-1

class Solution{
    public int maxVowels(String s,int k){
        int n=s.length();
        int vowel_count=0;
        for(int i=0;i<k;++i){
            vowel_count+= isVowel(s.charAt(i));       
        }    
        int ans=vowel_count;
        for(int i=k;i<n;++i){
            vowel_count +=isVowel(s.charAt(i))-isVowel(s.charAt(i-k));
            ans=Math.max(ans,vowel_count);        
        }
        return ans;
    }
    public int isVowel(char ch){
        return ch=='a'|| ch=='e' || ch=='i' ||ch=='o' || ch=='u' ?1:0;    
    }
}


相关文章
|
7月前
|
存储
【题型总结】寻找满足字符出现奇数次/偶数次的子串个数或者子串最长长度
【题型总结】寻找满足字符出现奇数次/偶数次的子串个数或者子串最长长度
126 0
【Leetcode -415.字符串相加 - 434.字符串中的单词数】
【Leetcode -415.字符串相加 - 434.字符串中的单词数】
45 0
|
5月前
|
C++
1456. 定长子串中元音的最大数目C++
1456. 定长子串中元音的最大数目C++
|
5月前
|
存储
2559. 统计范围内的元音字符串数(前缀和) o(n)时间复杂度
2559. 统计范围内的元音字符串数(前缀和) o(n)时间复杂度
|
7月前
|
算法 测试技术 C#
【线段树】2213. 由单个字符重复的最长子字符串
【线段树】2213. 由单个字符重复的最长子字符串
|
7月前
|
设计模式 算法 Java
【数据结构和算法】定长子串中元音的最大数目
这是力扣的 1456 题,难度为中等,解题方案有很多种,本文讲解我认为最奇妙的一种。又是一道滑动窗口的典型例题,可以帮助我们巩固滑动窗口算法。给你字符串s和整数k。 请返回字符串s中长度为k的单个子字符串中可能包含的最大元音字母数。 英文中的元音字母为(a,e,i,o,u)。
86 1
|
存储
【Leetcode-58.最后一个单词的长度 -66.加一】
【Leetcode-58.最后一个单词的长度 -66.加一】
52 0
|
算法 C语言 C++
【前缀和】1456.定长子串中元音的最大数目
本篇将学习前缀和OJ题定长子串中元音的最大数目相关知识。
83 1
剑指offer 49. 最长不含重复字符的子字符串
剑指offer 49. 最长不含重复字符的子字符串
74 0
|
Python
LeetCode 1456. 定长子串中元音的最大数目
给你字符串 s 和整数 k 。
165 0