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;    
    }
}


相关文章
|
16天前
|
存储 索引
|
16天前
|
存储
【题型总结】寻找满足字符出现奇数次/偶数次的子串个数或者子串最长长度
【题型总结】寻找满足字符出现奇数次/偶数次的子串个数或者子串最长长度
46 0
|
16天前
|
算法 测试技术 C#
【线段树】2213. 由单个字符重复的最长子字符串
【线段树】2213. 由单个字符重复的最长子字符串
|
16天前
|
索引
leetcode-1624:两个相同字符之间的最长子字符串
leetcode-1624:两个相同字符之间的最长子字符串
24 0
|
16天前
|
设计模式 算法 Java
【数据结构和算法】定长子串中元音的最大数目
这是力扣的 1456 题,难度为中等,解题方案有很多种,本文讲解我认为最奇妙的一种。又是一道滑动窗口的典型例题,可以帮助我们巩固滑动窗口算法。给你字符串s和整数k。 请返回字符串s中长度为k的单个子字符串中可能包含的最大元音字母数。 英文中的元音字母为(a,e,i,o,u)。
57 1
|
16天前
|
存储 算法 程序员
【算法训练-字符串 一】【子串问题】最长无重复子串、最长回文子串、最长公共前缀
【算法训练-字符串 一】【子串问题】最长无重复子串、最长回文子串、最长公共前缀
42 0
|
11月前
|
算法 C语言 C++
【前缀和】1456.定长子串中元音的最大数目
本篇将学习前缀和OJ题定长子串中元音的最大数目相关知识。
52 1
|
Python
LeetCode 1456. 定长子串中元音的最大数目
给你字符串 s 和整数 k 。
127 0
求字符串中最长的连续出现的字符
求字符串中最长的连续出现的字符
296 0
http://www.vxiaotou.com