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

news2024/9/28 5:23:44

给你字符串 s 和整数 k 。

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

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

示例 1:

输入:s = “abciiidef”, k = 3
输出:3
解释:子字符串 “iii” 包含 3 个元音字母。

示例 2:

输入:s = “aeiou”, k = 2
输出:2
解释:任意长度为 2 的子字符串都包含 2 个元音字母

看到字符串的题目第一反应就是使用动态规划,因此首先用经典的动态规划,使用dp数组去记录元音字母的数量。
迭代公式是:
d p [ i ] = d p [ i − 1 ] + f l a g ( s [ i ] ) − f l a g ( s [ i − k ] ) dp[i] = dp[i-1] + flag(s[i])-flag(s[i-k]) dp[i]=dp[i1]+flag(s[i])flag(s[ik])
其中 f l a g flag flag表示某个位置上的字母是否是元音字母
由此得到的code如下所示:

class Solution:
    def maxVowels(self, s: str, k: int) -> int:
        if len(s)<1 or k <1 or len(s) < k:
            return 0
        dp = [0 for _ in range(len(s))]
        latter = 'aeiou'
        if s[0] in latter:
            dp[0] = 1
        for i in range(1,len(s)):
            dp[i] = dp[i-1]
            if s[i] in latter:
                dp[i] += 1
            if i >= k and s[i-k] in latter:
                dp[i] = max(0,dp[i]-1)
        return max(dp)     

但是code的运行数据不是很好,我又想到其实不需要一整个数组来记录所有的结果,直接使用两个变量就好了,所以改进了一下code:

class Solution:
    def maxVowels(self, s: str, k: int) -> int:
        if len(s)<1 or k <1 or len(s) < k:
            return 0
        dp = 0
        result = 0
        latter = 'aeiou'
        for i in range(len(s)):
            if s[i] in latter:
                dp += 1
            if i >= k and s[i-k] in latter:
                dp = max(0,dp-1)
            result = max(result,dp)
        return result

运行结果就好了很多:
在这里插入图片描述

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/129393.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring的7种事务传播方式

Spring事务传播行为体现在某个service方法调用另一个service方法&#xff0c;事务该如何进行下去。 Spring支持7中事务传播方式&#xff0c;在Propagation类中可以看到&#xff0c;如下&#xff1a; REQUIRED(0), SUPPORTS(1), MANDATORY(2), REQUIRES_NEW(3), NOT_SUPPORTED…

【操作系统】进程的属性及状态(三态五态七态)

文章目录进程的概念进程的属性1、结构性2、共享性3、动态性4、独立性5、制约性6、并发性进程状态1、三态模型2、五态模型3、七态模型进程的概念 程进程是一个可并发执行的具有独立功能的程序关于某个数据集合的一次执行过程&#xff0c;也是操作系统进行资源分配和保护的基本…

Java中内部类的讲解(Java系列8)

目录 前言&#xff1a; 1.内部类 1.1内部类的概念 1.2内部类的分类 1.2.1实例内部类 1.2.2静态内部类 1.2.3局部内部类 1.2.4匿名内部类 结束语&#xff1a; 前言&#xff1a; 这次小编主要与大家分享一下什么是内部类&#xff0c;那么接下来就和小编一起来见识一下内…

aloam学习笔记(一)

开始学习aloam框架&#xff0c;记录一下最开始运行aloam中出现的各种问题以及解决方式。 1.aloam地址 GitHub - HKUST-Aerial-Robotics/A-LOAM: Advanced implementation of LOAM 2.安装aloam的一些依赖 主要是两个ceres和pcl库 2.1安装ceres ceres官方地址&#xff1a;I…

宝马335i手动挡和M3手动挡的对比

感受篇 *动力 两车的动力都堪称强悍&#xff0c;但发力感受差异非常大。335具备典型的涡轮车特征&#xff0c;动力来的比较突兀&#xff0c; 低速跟车时油门很难控制&#xff0c;给小了车走得慢&#xff0c;给大了就往前窜。转速拉到3000转以后335的动力刺激度非常高&#xff…

房产管理系统安全可靠性分析

数图互通房产管理 高校房产管理系统是基于公司自主研发FMCenter平台开发的应用系统。 一、系统安全性分析&#xff1a; 1.支持SSL传输协议&#xff0c;可以实现链路层的加密传输。 2.提供基于角色的授权体系&#xff0c;角色可自…

辞旧迎新,社科院与杜兰大学金融管理硕士项目引领你在金融的世界遇到更好的自己

不知不觉中2022年剩下最后的2天了&#xff0c;这一年中一半的时间是核酸&#xff0c;另一半是辛酸。当我们的理想快被生活磨灭的时候&#xff0c;记得把生活调成自己喜欢的频率&#xff0c;尽力而为。告别过去才能跟未来更好的相逢&#xff0c;新的一年我们的在职读研从社科院杜…

webdriver的尝试:三 【移动端的使用appium-配置】

文章目录appium安装appium与inspectorinspector配置配置信息获取inspector启动遇到的错误记录启动appium Selenium webdriver到移动端使用的是appium。 官方网站 介绍是&#xff1a;appium是一个app的自动化测试框架&#xff0c;使用webdriver协议。且可用于&#xff0c;原生…

【机器学习实战】二、随机森林算法预测出租车车费案例

随机森林算法预测出租车车费案例 一、导入第三方库 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import sklearn二、加载数据集 train pd.read_csv(train.csv,nrows1000000) # 加载前1000000条数据 test pd.read_csv(…

Java-抽象类与接口

前言 温故而知新 最近从头来看当初学过的语法知识点, 温故而知新, 发现当初还有许多未掌握的知识, 所以我建议大家也要多温故, 可能当初有好多知识点是没掌握到的. 这篇博客的重点就是介绍抽象类与接口, 并阐述他们的区别. 一. 抽象类 1. 概念 在面向对象的概念中, 所有的…

git基础

代码托管平台&#xff1a;git.acwing.com 一、git基本概念 工作区&#xff1a;仓库的目录。工作区是独立于各个分支的。 暂存区&#xff1a;数据暂时存放的区域&#xff0c;类似于工作区写入版本库前的缓存区。暂存区是独立于各个分支的。 版本库&#xff1a;存放所有已经提交…

黑马Hive+Spark离线数仓工业项目--数仓主题应用层ST层构建(2)

服务域&#xff1a;回访主题分析 目标&#xff1a;掌握回访主题的需求分析 路径 - step1&#xff1a;需求 - step2&#xff1a;分析 实施 需求&#xff1a;统计不同维度下的回访主题指标的结果 分析 - 指标 - 回访工程师数量、回访人员数量、回访人员最大数量、回访人员最…

C++学习 Day.8 (重载运算符和类型转换运算符)ps:一大波参考博客来袭~~

this指针 详解请点这里 复制构造函数详解 点这里和这里 指针的指针的地址&#xff0c;指针自身的地址&#xff0c;指针指向的地址 点这里 实例化解释很好 引用和指针的区别 点这里和这里 引用详解&#xff1a;C&#xff1a;引用的简单理解 - Tom文星 - 博客园 (cnblogs.co…

SMC详解

SMC全称:Secure Monitor Call 目的&#xff1a;进入到EL3异常等级 应用场景&#xff1a;大于等于EL1异常等级下使用&#xff08;EL0下不能使用&#xff09; 官方介绍以及使用方式如下&#xff1a; 主要配置&#xff1a; (1) SCR_EL3.SMD&#xff1a; (2) HCR_EL2.TSC 主要功…

ArcGIS基础实验操作100例--实验20按像元修改栅格值

本实验专栏来自于汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 基础编辑篇--实验20 按像元修改栅格值 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&…

SpringCloud整合Seata(AT两阶段--场景: 下单减少库存)

文章目录零&#xff1a;前置操作 --- 搭建Seata服务一&#xff1a;介绍说明二&#xff1a;添加undolog表三&#xff1a;框架整合Seata相关依赖3.1&#xff1a;引入公共SEATA POM依赖3.2&#xff1a;业务服务引入SEATA公共组件依赖3.3&#xff1a;yml文件配置Seata客户端和注册信…

[C++]模板与STL简介

&#x1f941;作者&#xff1a; 华丞臧 &#x1f4d5;​​​​专栏&#xff1a;【C】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449;LeetCode 文章目录模板初阶…

AspNetCore中的日志组件

介绍 本文写作年代比较久远&#xff0c;最新日志文档请查看&#xff1a; .NET Core 和 ASP.NET Core 中的日志记录 | Microsoft Learn了解如何使用由 Microsoft Extension.Logging NuGet 包提供的日志记录框架。https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/l…

选择-C++选择分支

引言 你们喜欢吃"只因"肉? a > 喜欢 b > 还行 c > 不喜欢 请说出你的答案: 证明 真ikun 和假ikun 关键点 我现在 a 因为我是ikun 我是 唯一玩梗的CSDN技术型博主 哈哈所以夹带点私货 你们dddd(懂的都懂) 关注我,让你看到更多的C/C 的技术点和技术以外的梗…

CTF之MISC题目-简单流量

CTF系列文章 第一篇 CTF之密码学题目-classical && coding 第二篇 CTF之MISC题目-西游记 第三篇 CTF之MISC题目-简单流量 文章目录CTF系列文章前言一、题目是什么&#xff1f;二、解题步骤1.下载文件、解压2.使用wireshark3.解压flag.zip总结前言 这是一道关于网络数…