Menu Close

Leetcode 2586: Count the Number of Vowel Strings in Range Solution

Here, we will see how to solve Count the Number of Vowel Strings in Range Solution of leet code 2586 problem.

You are given a 0-indexed array of string words and two integers left and right.

A string is called a vowel string if it starts with a vowel character and ends with a vowel character where vowel characters are 'a''e''i''o', and 'u'.

You have to return the number of vowel strings words[i] where i belongs to the inclusive range [left, right].

Example 1:

Input: words = ["are","xyz","u"], left = 0, right = 2
Output: 2
Explanation: 
- "are" is a vowel string because it starts with 'a' and ends with 'e'.
- "xyz" is not a vowel string because it does not start and end with a vowel.
- "u" is a vowel string because it starts with 'u' and ends with 'u'.
The number of vowel strings in the mentioned range is 2.

Example 2:

Input: words = ["hey","aeo","mu","ooo","artro"], left = 1, right = 4
Output: 3
Explanation: 
- "aeo" is a vowel string because it starts with 'a' and ends with 'o'.
- "mu" is not a vowel string because it does not start with a vowel.
- "ooo" is a vowel string because it starts with 'o' and ends with 'o'.
- "artro" is a vowel string because it starts with 'a' and ends with 'o'.
The number of vowel strings in the mentioned range is 3.

Approach:

  • Iterate through array of words start from given left to right index.
  • Check first and last character of each word whether It’s vowel or not
  • If the word start and ends with vowel, increment the count
  • Return the count at the end.

Count the Number of Vowel Strings in Range Solution in C++ and go:

Here, we will be solving problem in multiple ways with code.

C++ code 1:

class Solution {
public:
    
    bool IsVowel(char c)
    {
        return (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') ;
    }
    
    int vowelStrings(vector<string>& strs, int l, int r) {
        int cnt = 0 ;
        
        for(int i = l ; i <= r ; ++i) {
            cnt += (IsVowel(strs[i].front()) && IsVowel(strs[i].back())) ;
        }
            
        return cnt ;
    }
};

C++ code 2:

class Solution {
public:
    bool is_vowel(char ch) {
        if(ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') {
            return true;
        } else {
            return false;
        }
    }
    
    int vowelStrings(vector<string>& words, int left, int right) {
        int count = 0;
        
        for(int i = left; i <= right; i++) {
            if(is_vowel(words[i][0]) && is_vowel(words[i][words[i].length()-1])) {
                count++;
            }
        }
        return count;
    }
};

Go code 1:

func is_vowel(ch rune) bool {
    if ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u' {
        return true
    } else {
        return false
    }
}

func vowelStrings(words []string, left int, right int) int {
    count := 0
    
    for i := left; i <= right; i++ {
        if is_vowel(rune(words[i][0])) && is_vowel(rune(words[i][len(words[i])-1])) {
            count++
        }
    }
    return count
}

Output:

Input: words = ["are","xyz","u"], left = 0, right = 2
Output: 2

Time complexity: O(n)

Space complexity: O(1)

To check more leetcode problem’s solution. Pls click given below link:

https://www.techieindoor.com/category/leetcode/

https://www.techieindoor.com/category/interview-questions/

Posted in C++, Easy, golang, golang program, Leetcode

Leave a Reply

Your email address will not be published. Required fields are marked *