2559. 统计范围内的元音字符串数(前缀和) o(n)时间复杂度

news2024/7/4 5:32:26

给你一个下标从 0 开始的字符串数组 words 以及一个二维整数数组 queries 。

每个查询 queries[i] = [li, ri] 会要求我们统计在 words 中下标在 li 到 ri 范围内(包含 这两个值)并且以元音开头和结尾的字符串的数目。

返回一个整数数组,其中数组的第 i 个元素对应第 i 个查询的答案。

注意:元音字母是 'a''e''i''o' 和 'u' 。

示例 1:

输入:words = ["aba","bcb","ece","aa","e"], queries = [[0,2],[1,4],[1,1]]
输出:[2,3,0]
解释:以元音开头和结尾的字符串是 "aba"、"ece"、"aa" 和 "e" 。
查询 [0,2] 结果为 2(字符串 "aba" 和 "ece")。
查询 [1,4] 结果为 3(字符串 "ece"、"aa"、"e")。
查询 [1,1] 结果为 0 。
返回结果 [2,3,0] 。

示例 2:

输入:words = ["a","e","i"], queries = [[0,2],[0,1],[2,2]]
输出:[3,2,1]
解释:每个字符串都满足这一条件,所以返回 [3,2,1] 。

提示:

  • 1 <= words.length <= 105
  • 1 <= words[i].length <= 40
  • words[i] 仅由小写英文字母组成
  • sum(words[i].length) <= 3 * 105
  • 1 <= queries.length <= 105
  • 0 <= queries[j][0] <= queries[j][1] < words.length
class Solution(object):
    def vowelStrings(self, words, queries):
        nums = [0] * (len(words))
        for i in range(len(words)):
            # 检查单词是否以元音字母开头和结尾
            if words[i][0] in ['a','e','i','o','u'] and words[i][-1] in ['a','e','i','o','u']:
                nums[i] = 1
        
        # 计算前缀和
        presum = 0
        pre = [0] * (len(words))
        for i in range(len(words)):
            presum += nums[i]
            pre[i] = presum
        
        ans = []
        for i in queries:
            count = 0
            if i[0] == 0:
                count = pre[i[1]]
            else:
                count = pre[i[1]] - pre[i[0] - 1]
            ans.append(count)
        return ans

  1. **预处理:**首先,对给定的单词列表进行预处理,对于每个单词,检查其是否以元音字母开头和结尾。如果是,则将对应的 nums 数组的对应位置标记为 1,表示该位置的单词满足条件,否则标记为 0。

  2. **前缀和:**然后,使用前缀和技巧来快速计算出满足条件的单词数。创建一个前缀和数组 pre,其中 pre[i] 表示从单词列表的开头到第 i 个单词(包括第 i 个单词)满足条件的单词数的累计和。遍历 nums 数组,并计算累计和,将结果存储在 pre 数组中。

  3. **查询处理:**对于每个查询范围 [start, end],我们可以利用前缀和数组 pre 来计算该范围内满足条件的单词数。如果查询范围的起始位置为 0,则直接取 pre[end] 作为答案;否则,我们可以通过计算 pre[end] - pre[start - 1] 来得到该范围内的满足条件的单词数。

  4. **返回答案:**将每个查询的结果存储在一个列表 ans 中,并最终返回该列表作为函数的结果。

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

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

相关文章

【2024PythonPycharm详细安装教程】

1.打开官网 https://www.python.org/ downloads——>Windows 2.找到 Download Windows installer (64-bit) 下载 3.下载完成双击安装包 勾选Add python.exe to PATH(自动配置系统变量) 点击Install Now&#xff08;默认安装&#xff09; 然后看到安装成功&#xff0…

【权威出版/投稿优惠】2024年社会发展与公共文化国际会议(SDPC 2024)

2024 International Conference on Social Development and Public Culture 2024年社会发展与公共文化国际会议 【会议信息】 会议简称&#xff1a;SDPC 2024 截稿时间&#xff1a;点击查看 大会地点&#xff1a;中国上海 会议官网&#xff1a;www.icsdpc.com 会议邮箱&#x…

中山大学和字节发布「视频虚拟试穿」扩散模型VITON-DiT,一键生成换装后视频!

视频虚拟试穿技术日益受到关注&#xff0c;然而现有的工作局限于将服装图像转移到姿势和背景简单的视频上&#xff0c;对于随意拍摄的视频则效果不佳。最近&#xff0c;Sora 揭示了 Diffusion Transformer (DiT) 在生成具有真实场景的逼真视频方面的可扩展性&#xff0c;可以说…

任务悬赏APP搭建必备功能有哪些?

搭建一个任务悬赏APP&#xff0c;需要具备以下必备功能&#xff1a; 在线发布需求&#xff1a;允许用户或商家在线发布任务需求&#xff0c;如浏览广告等 在线接单功能&#xff1a;用户可以在线接单和抢单&#xff0c;以及接收任务完成提醒 推广功能&#xff1a;商户可以通过…

回收站找不到已删除的文件怎么办?别急,这里有解决方法

在数字化时代&#xff0c;电脑中的数据成为了我们生活和工作的重要部分。无论是珍贵的照片、重要的文档&#xff0c;还是日常的工作文件&#xff0c;我们都希望能够妥善保存。然而&#xff0c;误删除文件的情况时有发生&#xff0c;而当我们急切地打开回收站试图找回这些文件时…

JSON 无法序列化

JSON 无法序列化通常出现在尝试将某些类型的数据转换为 JSON 字符串时&#xff0c;这些数据类型可能包含不可序列化的内容。 JSON 序列化器通常无法处理特定类型的数据&#xff0c;例如日期时间对象、自定义类实例等。在将数据转换为 JSON 字符串之前&#xff0c;确保所有数据都…

Anaconda配置环境

查看存在的环境 conda list创建环境 #创建 名称为python38的python环境 conda create -n python38 python3.8 #激活 conda activate python38 #退出当前环境 conda deactivate安装python包 #安装numpy包 conda install numpy #安装指定版本 conda install numpy1.0.2 #安装指…

关机重启命令

1.shutdown命令 [rootlocalhost ~]#shutdown [选项] 时间 选项&#xff1a; -c&#xff1a;取消前一个关机命令 -h&#xff1a;关机 -r&#xff1a;重启 正确使用关机重启命令&#xff0c;因为服务器多个人使用的情况下&#xff0c;硬盘正在高速运行&#xff0c;当强制性关机…

数据恢复工具推荐:电脑回收站删除的文件怎么恢复?8个回收站恢复软件,收藏!

当文件从电脑的回收站被删除后&#xff0c;许多用户可能认为这些文件已永久丢失。然而&#xff0c;实际上&#xff0c;在数据被新数据覆盖之前&#xff0c;这些删除的文件仍然可以通过使用专门的数据恢复软件来恢复。本文将介绍8款顶级的文件恢复软件&#xff0c;恢复电脑回收站…

Mybatis-Plus被恶意CVE一事

前言 Mybatis-Plus框架在2024年5月被人在CVE网络安全漏洞库上提交了漏洞&#xff0c;该漏洞可笑无比&#xff0c;但是有趣的是竟然还是被CVE审核确认为了SQL注入漏洞&#xff1b; 发生了什么 见Mybatis-plus发出的申明公告&#xff1a;https://mp.weixin.qq.com/s?__bizMzA…

【UE5:CesiumForUnreal】——从地球全景聚焦到某区域的动画制作

目录 1.添加Render Texture并和SceneCapture2D关联 1.1 场景准备 1.2 添加Render Texture 1.3 添加SceneCapture2D并关联 2.在Widget上显示Render Texture 2.1 创建Widget 2.2 配置Widget 2.3 添加控制按钮 2.4 添加窗口逻辑 3.制作Sequencer动画 3.1 创建Sequencer…

欧美北美南美国外媒体投稿和东南亚中东亚洲媒体海外新闻发稿软文推广营销策略有哪些?

在当今全球化的浪潮中&#xff0c;中国品牌正积极拓展海外市场&#xff0c;寻求更广阔的发展空间。面对国际竞争&#xff0c;有效的海外媒体发稿营销策略对于品牌国际化至关重要。以下是一些关键点和建议&#xff0c;以帮助品牌在海外市场取得成功。 深入了解目标市场&#xf…

2024年最新Stable Diffusion本地化部署详细攻略,手把手教程(建议收藏!!)_stable diffusion 本地部署

今天有网友问到SD本地部署的攻略&#xff0c;我找到以前收集的资料发出来分享给大家&#xff0c;希望对大家有帮助&#xff01; Stable Diffusion本地化部署详细攻略 一、硬件要求 内存&#xff1a;至少16GB 硬盘&#xff1a;至少60GB以上的磁盘空间&#xff0c;推荐SSD固态…

Unity 集成 FMOD 音频管理插件 2.02

Unity 集成 FMOD 音频管理插件 2.02 3. 集成教程&#xff1a;3.1 设置Unity项目3.2 设置FMOD项目3.3 设置 FMOD for Unity3.4 添加声音&#xff1a;卡丁车引擎3.5 添加声音&#xff1a;氛围3.6 添加声音&#xff1a;音乐3.7 删除现有音频3.8 下一步 10. 脚本 API 参考10.1 基础…

Shopee与Lazada卖家如何运用自养号测评稳定提升销量于评价

在跨境电商行业中&#xff0c;测评对于提高产品销量是个非常优秀的辅助方式。作为东南亚电商巨头&#xff0c;Shopee和Lazada这两大主流平台上&#xff0c;卖家竞争也尤为激烈&#xff0c;卖家们不断寻求有效的方法提升自己的产品销量。为了应对这一挑战&#xff0c;测评应运而…

揭秘重庆耶非凡科技:人力RPO项目真的能帮你赚钱吗?

在当今这个快速变化的市场环境中&#xff0c;企业为了降低运营成本、提升管理效率&#xff0c;越来越倾向于将非核心业务外包给专业的服务提供商。其中&#xff0c;人力资源外包(HRO)作为外包领域的重要组成部分&#xff0c;近年来得到了快速发展。重庆耶非凡科技有限公司的人力…

Laravel框架进阶:掌握队列系统,优化应用性能

Laravel使用队列处理 本文主要讲述如何利用 Laravel 框架的队列系统来管理异步任务和设置周期性执行的任务&#xff0c;从而增强应用程序的效能和可靠性。 Laravel队列的优势 异步执行&#xff1a;将任务添加到队列中后&#xff0c;可以立即返回响应给用户&#xff0c;而任务…

AI绘画如何打造高质量数据集?

遇到难题不要怕&#xff01;厚德提问大佬答&#xff01; 厚德提问大佬答11 你是否对AI绘画感兴趣却无从下手&#xff1f;是否有很多疑问却苦于没有大佬解答带你飞&#xff1f;从此刻开始这些问题都将迎刃而解&#xff01;你感兴趣的话题&#xff0c;厚德云替你问&#xff0c;你…

MySQL表的增删改查初阶(上篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

SVNCloud 与 Navicat和IDEA的连接

文章目录 SVNCloud 配置Navicat访问云端数据库与IDEA Java jdbc 的连接 SVNCloud 配置 访问网址&#xff1a;SVN注册账号&#xff0c;进入mysql区域&#xff1a; 数据库管理->创建数据库&#xff0c;输入数据库名称和密码&#xff0c;注意&#xff0c;这里的数据库名称实际…