​LeetCode解法汇总2559. 统计范围内的元音字符串数

news/2024/11/17 0:42:06/

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

给你一个下标从 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

解题思路:

* 解题思路:
* 这题可以轻易的求出words中哪个是符合要求的,哪个不符合。但是难点是queries的范围未10^5,而words的长度也是10^5,所以必须保证O(n)的时间复杂度才可以。
* 所以我们可以使用前缀和的方式来计算,使用数组prefixs记录words中每一位之前的所有符合要求的数量之和。
* 这样第queries[i]的答案就是prefixs[li]-prefixs[ri]

代码:

public class Solution2559 {Set<String> set = new HashSet<>();public int[] vowelStrings(String[] words, int[][] queries) {set.add("a");set.add("e");set.add("i");set.add("o");set.add("u");int sum = 0;int[] prefixs = new int[words.length + 1];for (int i = 0; i < words.length; i++) {String word = words[i];if (set.contains(word.substring(0, 1)) && set.contains(word.substring(word.length() - 1))) {sum++;}prefixs[i + 1] = sum;}int[] result = new int[queries.length];for (int i = 0; i < queries.length; i++) {int[] query = queries[i];result[i] = prefixs[query[1] + 1] - prefixs[query[0]];}return result;}
}


http://www.ppmy.cn/news/163377.html

相关文章

Redis的缓存过期淘汰策略

Redis的缓存过期淘汰策略 一 面试题引入二 Redis内存满了怎么办&#xff1f;2.1 redis默认内存多少&#xff1f;在哪里查看&#xff1f;如何设置修改&#xff1f;2.2 如果Redis内存使用超出了设置的最大值会怎样&#xff1f; 三 Redis里的数据怎么没的&#xff1f;它如何删除呢…

OS-文件管理1-文件-文件的逻辑结构与物理结构。

一&#xff0c;文件管理 关键词&#xff1a;如何组织及提供的功能。 二&#xff0c;文件-文件基本概念。 1.文件&#xff0c;记录&#xff0c;数据项 2.文件属性 三&#xff0c;文件-文件控制块FCB与索引结点。 文件控制块FCB&#xff1a;用来存放控制文件需要的各种信息…

在Linux系统下基于Docker搭建Redis集群

创建镜像 #部署Redis集群&#xff0c;该集群有3个节点; --cluster-enabled yes允许启用集群; docker create --name redis-node--01 --net host -v /data/redis-data/node1:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file redis-node--01.conf --port 6379…

ffmpeg在windows环境下的详细安装教程

这两天整理好用的录屏软件&#xff0c;发现了Captura这个软件&#xff0c;软件本身的安装很简单&#xff0c;但由于Captura需要依赖ffmpeg&#xff08;一套可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的开源计算机程序&#xff09;&#xff0c;而ffmpeg在安…

Y430刷新BIOS

今天冒险试了一下&#xff0c;成功了。 其实很简单&#xff0c;找到新的版本和程序&#xff0c;刷前关掉所有程序&#xff0c;最好把能抽的线都抽掉&#xff0c;总之防止一切可能的意外&#xff0c; win7下管理员运行程序OK 不过还是小心为好&#xff0c;毕竟BIOS刷新失败主…

Y7000P电池0%解决办法

如果有条件&#xff0c;可以撕开黑膜测量三块电芯&#xff0c;出现这种情况至少有一块已经鼓包且电压不正常 网上现在给出的5B10Q82428和5B10Q88559都是thinkpad系列用的&#xff0c;压根就没起作用&#xff0c;最后肯定提示there are no attached batteries that require a f…

悲惨经历----联想Y430换屏门

08年末买的联想Y430&#xff0c;不想到10年5月&#xff0c;大概1年半的样子&#xff0c;电脑突然很闪很闪&#xff0c;打电话给联想北京客服&#xff0c;说是要换屏.非常郁闷&#xff0c;在网上也查到Y430到处是换屏的新闻&#xff0c;心里哇凉哇凉的。 没办法送到维修站去&…

Y430P拆机:安装固态硬盘+内存+重装系统梳理

Y430P拆机&#xff1a;安装固态硬盘内存重装系统梳理 联想y430p固态硬盘安装教程 联想笔记本y430p加固态硬盘/ssd(M.2)