首页 > 其他分享 >LeetCode 2559. 统计范围内的元音字符串数

LeetCode 2559. 统计范围内的元音字符串数

时间:2024-06-07 18:28:48浏览次数:18  
标签:数组 int 2559 vowels 字符串 words queries 元音 LeetCode

2559. 统计范围内的元音字符串数

给你一个下标从 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 <= 10^5
  • 1 <= words[i].length <= 40
  • words[i] 仅由小写英文字母组成
  • sum(words[i].length) <= 3 * 10^5
  • 1 <= queries.length <= 10^5
  • 0 <= queries[j][0] <= queries[j][1] < words.length

提示 1

Precompute the prefix sum of strings that start and end with vowels.


提示 2

Use unordered_set to store vowels.


提示 3

Check if the first and last characters of the string are present in the vowels set.


提示 4

Subtract prefix sum for range [l-1, r] to find the number of strings starting and ending with vowels.

解法:前缀和 

class Solution {
    public int[] vowelStrings(String[] words, int[][] queries) {
        String vowel = "aeiou";
        int n = words.length;
        int[] pre = new int[n + 1];
        int[] ans = new int[queries.length];
        for (int i = 1; i <= n; i++) {
            String s = words[i - 1];
            pre[i] = ( vowel.indexOf(s.charAt(0)) != -1 && vowel.indexOf(s.charAt(s.length() - 1)) != -1 ) ? pre[i - 1] + 1 : pre[i - 1];
        }
        for (int i = 0; i < queries.length; i++) {
            ans[i] = pre[queries[i][1] + 1] - pre[queries[i][0]];
        }
        return ans;
    }
}

复杂度分析 

  • 时间复杂度:O(N),N 是数组words 和 数组queries 的长度 中的较大值。
  • 空间复杂度:O(N),N 是数组words 和 数组queries 的长度 中的较大值。

标签:数组,int,2559,vowels,字符串,words,queries,元音,LeetCode
From: https://blog.csdn.net/m0_56090828/article/details/139478161

相关文章

  • Leetcode 300. 最长递增子序列
    https://leetcode.cn/problems/longest-increasing-subsequence/description/给你一个整数数组nums,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]是数组[0,3,1,6,2,2,7]的子序列。示......
  • 2559. 统计范围内的元音字符串数(前缀和) o(n)时间复杂度
    给你一个下标从 0 开始的字符串数组 words 以及一个二维整数数组 queries 。每个查询 queries[i]=[li,ri] 会要求我们统计在 words 中下标在 li 到 ri 范围内(包含 这两个值)并且以元音开头和结尾的字符串的数目。返回一个整数数组,其中数组的第 i 个元素对......
  • leetcode19删除链表的倒数第 N 个结点
    本文主要讲解删除链表倒数第n个节点的要点与细节c++与java代码如下,末尾本题之前可以尝试leetcode203移除链表元素具体要点:1.首先,单看移除链表节点,核心操作是:cur->next=cur->next->next 即,当前节点cur的下一个节点指向原本的下下个节点小细节:操作时,我们需要得到要......
  • leetcode160相交链表
    本文主要讲解相交链表的要点与细节c++及java代码如下,末尾1.两个链表相交的条件是,两个节点的指针相同,而不是元素值相同,即if(a==b)returna; 2.·既然要找到相交的点,那么相交之后,两个链表就完全一样了(后续长度和数值),那么我们就要不断同步更新headA和headB的临时指针,直到......
  • 代码随想录算法训练营 第三天 链表 Leetcode203 移除链表元素 Leetcode707 设计链表 L
    Leetcode203移除链表元素 题目链接注意为了使后续节点方式统一 要人为设置链表头节点链表的处理一定要明白如何找前置节点/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(){}*L......
  • Q12 LeetCode904 水果成篮
    1.使用HashMap记录键值对2.定义HashMap方式HashMap<Integer,Integer>map=newHashMap<>();3.map.put(key,value);输入键值对4.map.getOrDefault(value,0);获取值,如果没有默认为0;5.map.get(key)取值6.map.size()键值对长度7.map.replace(key,value)替换key的value值 ......
  • LeetCode第一题“两数之和”(梦开始的地方~)
    “有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来。”“两年前第一次刷leetcode,第一题就不会。两年后的今天重刷第一题还是不会,我还是以前的我,不忘初心,没有一丝丝改变。”逛力扣的时候发现的,挺好玩的······然后看看LeetCode第一题难在哪里吧!题目:给定一个......
  • Q9 LeetCode844 比较含退格的字符串
    1.使用StringBuffer替代String挨个字符进行操作StringBuffersb=newStringBuffer(str);2.sb.charAt(i)进行字符串循环3.sb.append(char)进行字符数组的组成4.sb.deleteAt(i)进行指定位置字符的删除5.若比较StringBuffer字符是否相等需要将其转换成String使用toString()方法......
  • (第26天)【leetcode题解】226、翻转二叉树 589、N叉树的前序遍历 590、N叉树的后序遍
    目录226、翻转二叉树题目描述思路代码589、N叉树的前序遍历题目描述思路代码590、N叉树的后序遍历题目描述思路代码思考总结226、翻转二叉树题目描述给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。示例:输入:root=[4,2,7,1,3,6,9]输出:[4,7,2,9,......
  • leetcode第867题:转置矩阵
    matrix[i][j]需要放在转置矩阵的(j,i)位置publicclassSolution{publicint[][]Transpose(int[][]matrix){introws=matrix.Length;intcolumns=matrix[0].Length;int[][]array2=newint[columns][];//......