【滑动窗口】1456. 定长子串中元音的最大数目

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

解题思路

  • 将字符串转换为字符数组
  • 使用count来计算元音字符的个数 使用result来存储最后的结果
  • 使用i,j来指向字符串s的第一个元素
  • 判断chars[j] 是不是元音字符 如果是 count++;
  • 计算滑动窗口的长度 如果大于等于k
  • 判断滑动窗口最左边的字符是不是元音字符 如果是 count-- 滑动窗口向前移动i–
class Solution {
    public int maxVowels(String s, int k) {
        // 定长  滑动窗口
        char[] ans = s.toCharArray();
        int count = 0;
        int result = 0;

        int i = 0;
        for(int j = 0; j < ans.length; j++){
            if(ans[j] == 'a' || ans[j] == 'e' || ans[j] == 'i'||
            ans[j] == 'o' || ans[j] == 'u' ){
               // 如果找到元音字符
                count++;
                

            }

            //  计算窗口的长度
                 int dis = j - i + 1;
                 if(dis >= k){
                     // 说明需要移动窗口
                     result = result <= count ? count:result;

                     // 移动滑动窗口左边
                     // 判断是不是元音字符
                     if(ans[i] == 'a' || ans[i] == 'e' || ans[i] == 'i'||
                        ans[i] == 'o' || ans[i] == 'u' ){
                            count--;
                        }
                    i++;// 滑动窗口向前移动
                 }  
        }   
        return result;
    }
}

你可能感兴趣的:(#,Leetcode,数据结构)