LeetCode in Kotlin

2559. Count Vowel Strings in Ranges

Medium

You are given a 0-indexed array of strings words and a 2D array of integers queries.

Each query queries[i] = [li, ri] asks us to find the number of strings present in the range li to ri (both inclusive) of words that start and end with a vowel.

Return an array ans of size queries.length, where ans[i] is the answer to the ith query.

Note that the vowel letters are 'a', 'e', 'i', 'o', and 'u'.

Example 1:

Input: words = [“aba”,”bcb”,”ece”,”aa”,”e”], queries = [[0,2],[1,4],[1,1]]

Output: [2,3,0]

Explanation: The strings starting and ending with a vowel are “aba”, “ece”, “aa” and “e”.

The answer to the query [0,2] is 2 (strings “aba” and “ece”).

to query [1,4] is 3 (strings “ece”, “aa”, “e”).

to query [1,1] is 0.

We return [2,3,0].

Example 2:

Input: words = [“a”,”e”,”i”], queries = [[0,2],[0,1],[2,2]]

Output: [3,2,1]

Explanation: Every string satisfies the conditions, so we return [3,2,1].

Constraints:

Solution

class Solution {
    fun vowelStrings(words: Array<String>, queries: Array<IntArray>): IntArray {
        val vowels = HashSet(listOf('a', 'e', 'i', 'o', 'u'))
        val n = words.size
        val validWords = IntArray(n)
        for (i in 0 until n) {
            val startChar = words[i][0]
            val endChar = words[i][words[i].length - 1]
            validWords[i] = if (vowels.contains(startChar) && vowels.contains(endChar)) 1 else 0
        }
        val prefix = IntArray(n)
        prefix[0] = validWords[0]
        for (i in 1 until n) {
            prefix[i] = prefix[i - 1] + validWords[i]
        }
        val output = IntArray(queries.size)
        for (i in queries.indices) {
            val start = queries[i][0]
            val end = queries[i][1]
            output[i] = if (start == 0) prefix[end] else prefix[end] - prefix[start - 1]
        }
        return output
    }
}
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy