leetcode 每日一题统计范围内的元音字符串数

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

提示

中等

32

相关企业

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

通过次数

10.7K

提交次数

17.5K

通过率

61.0%

题解思路:字符预处理+前缀和

以下是C++手写代码:

class Solution {
const string p="aeiouAEIOU";
public:
    vector vowelStrings(vector& words, vector>& queries) {
        int n=words.size();
        vector count(n,0);
        for(int i=0;i sum(n+1,0);
        for(int i=1;i ans(m,0);
        for(int i=0;i

 以下是kotlin机器生成代码:(部分手动修改!)

class Solution {
    fun vowelStrings(words: Array, queries: Array): IntArray {
        val isTemp=IntArray(words.size)
        for(i in 0..words.size-1)
        {
            if(isVowelString(words[i]))
            {
                isTemp[i]=1;
            }
        }
        val counts = IntArray(queries.size)
        for (i in queries.indices) {
            val query = queries[i]
            var count = 0
            for (j in query[0]..query[1]) {
                if (isTemp[j]==1) {
                    count++
                }
            }
            counts[i] = count
        }
        return counts
    }
    fun isVowelString(word: String): Boolean {
        val vowels = setOf('a', 'e', 'i', 'o', 'u')
        return vowels.contains(word.first()) && vowels.contains(word.last())
    }
}

从{}的风格就能看出来哪里修改了!

你可能感兴趣的:(kotlin深度使用,C/C++编程序笔记,kotlin,开发语言)