当前位置: 首页 > article >正文

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

目录

  • 一、题目
  • 二、思路
    • 2.1 解题思路
    • 2.2 代码尝试
    • 2.3 疑难问题
  • 三、解法
  • 四、收获
    • 4.1 心得
    • 4.2 举一反三

一、题目

在这里插入图片描述

二、思路

2.1 解题思路

维护一个统计变量,出入时间窗口就判断

2.2 代码尝试

class Solution {
public:
    int maxVowels(string s, int k) {
        int sum=0;
        int maxsum=0;
        for(int i=0;i<k;i++){
            if(s[i]=='a'||s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u'){
                sum++;
            }
        }
        maxsum=max(sum,maxsum);
        for(int i=k;i<s.size();i++){
            if(s[i-k]=='a'||s[i-k]=='e'||s[i-k]=='i'||s[i-k]=='o'||s[i-k]=='u'){
                sum--;
            }
            if(s[i]=='a'||s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u'){
                sum++;
                maxsum=max(sum,maxsum);
            }
        }
        return maxsum;
    }
};

在这里插入图片描述

2.3 疑难问题

因为每次出入窗口都需要判断,所以时间复杂度会比较复杂,如何减少时间复杂度?

三、解法

class Solution {
public:
    bool isVowel(char ch) {
        return ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u'; 
    }
    
    int maxVowels(string s, int k) {
        int n = s.size();
        int vowel_count = 0;
        for (int i = 0; i < k; ++i) {
            vowel_count += isVowel(s[i]);
        }
        int ans = vowel_count;
        for (int i = k; i < n; ++i) {
            vowel_count += isVowel(s[i]) - isVowel(s[i - k]);
            ans = max(ans, vowel_count);
        }
        return ans;
    }
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length/solutions/518995/ding-chang-zi-chuan-zhong-yuan-yin-de-zu-4ka7/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

四、收获

4.1 心得

可以自己写一个函数做判断,减少代码冗余
在这里插入图片描述
确实,做多了就感觉模板都差不多

4.2 举一反三


http://www.kler.cn/a/538038.html

相关文章:

  • 优化GPT API接口链接的方法
  • 用Kibana实现Elasticsearch索引的增删改查:实战指南
  • 多光谱成像技术在华为Mate70系列的应用
  • 网站快速收录策略:提升爬虫抓取效率
  • Spring Boot接入Deep Seek的API
  • 基于SpringBoot的线上历史馆藏管理系统
  • openGauss 3.0 数据库在线实训课程6:学习用户一次只能连接到一个数据库,没法访问其他数据库的对象
  • Redis06 - Redis集群为什么是Hash槽而不是一致性哈希
  • ubuntu 本地部署deepseek r1 蒸馏模型
  • 用 Lambda 表达式处理 Java Stream 流操作
  • 装备库室管控系统|支持国产化、自主研发
  • 【医院运营统计专题】2.运营统计:医院管理的“智慧大脑”
  • 【Milvus】向量数据库pymilvus使用教程
  • 2022java面试总结,1000道(集合+JVM+并发编程+Spring+Mybatis)的Java高频面试题
  • Vue | 透传 Attributes(非 prop 的 attribute )
  • STM32 硬件I2C读写MPU6050
  • V8 GC垃圾回收
  • 一步一步生成音乐类小程序的详细指南,结合AI辅助开发的思路
  • android studio无痛入门
  • 西安科技创新领跑者:树莓集团以科技创新赋能产业生态圈
  • Milvus 存储设计揭秘:从数据写入到 Segment 管理的全链路解析
  • 深入浅出Log4j2:从入门到实战应用指南
  • C语言基础系列【6】流程控制
  • 快速建立私有化知识库(私有化训练DeepSeek,通过ollama方式)
  • python 使用OpenAI Whisper进行显卡推理语音翻译
  • 探秘树莓集团海南战略:文创领军者的市场破局之路