Welcome to Subscribe On Youtube

3813. Vowel-Consonant Score

Description

You are given a string s consisting of lowercase English letters, spaces, and digits.

Let v be the number of vowels in s and c be the number of consonants in s.

A vowel is one of the letters 'a', 'e', 'i', 'o', or 'u', while any other letter in the English alphabet is considered a consonant.

The score of the string s is defined as follows:

  • If c > 0, the score = floor(v / c) where floor denotes rounding down to the nearest integer.
  • Otherwise, the score = 0.

Return an integer denoting the score of the string.

 

Example 1:

Input: s = "cooear"

Output: 2

Explanation:

The string s = "cooear" contains v = 4 vowels ('o', 'o', 'e', 'a') and c = 2 consonants ('c', 'r').

The score is floor(v / c) = floor(4 / 2) = 2.

Example 2:

Input: s = "axeyizou"

Output: 1

Explanation:

The string s = "axeyizou" contains v = 5 vowels ('a', 'e', 'i', 'o', 'u') and c = 3 consonants ('x', 'y', 'z').

The score is floor(v / c) = floor(5 / 3) = 1.

Example 3:

Input: s = "au 123"

Output: 0

Explanation:

The string s = "au 123" contains no consonants (c = 0), so the score is 0.

 

Constraints:

  • 1 <= s.length <= 100
  • s consists of lowercase English letters, spaces and digits.

Solutions

Solution 1: Counting

We iterate through the string to count the number of vowels and consonants, denoted as $v$ and $c$, respectively. Finally, we calculate the score based on the problem description.

The time complexity is $O(n)$, where $n$ is the length of the string. The space complexity is $O(1)$.

  • class Solution {
        public int vowelConsonantScore(String s) {
            int v = 0, c = 0;
            for (int i = 0; i < s.length(); i++) {
                char ch = s.charAt(i);
                if (Character.isLetter(ch)) {
                    c++;
                    if ("aeiou".indexOf(ch) != -1) {
                        v++;
                    }
                }
            }
            c -= v;
            return c == 0 ? 0 : v / c;
        }
    }
    
    
  • class Solution {
    public:
        int vowelConsonantScore(string s) {
            int v = 0, c = 0;
            for (char ch : s) {
                if (isalpha(ch)) {
                    c++;
                    if (string("aeiou").find(ch) != string::npos) {
                        v++;
                    }
                }
            }
            c -= v;
            return c == 0 ? 0 : v / c;
        }
    };
    
    
  • class Solution:
        def vowelConsonantScore(self, s: str) -> int:
            v = c = 0
            for ch in s:
                if ch.isalpha():
                    c += 1
                    if ch in "aeiou":
                        v += 1
            c -= v
            return 0 if c == 0 else v // c
    
    
  • func vowelConsonantScore(s string) int {
    	v, c := 0, 0
    	for _, ch := range s {
    		if unicode.IsLetter(ch) {
    			c++
    			if strings.ContainsRune("aeiou", ch) {
    				v++
    			}
    		}
    	}
    	c -= v
    	if c == 0 {
    		return 0
    	}
    	return v / c
    }
    
    
  • function vowelConsonantScore(s: string): number {
        let [v, c] = [0, 0];
        for (const ch of s) {
            if (/[a-zA-Z]/.test(ch)) {
                c++;
                if ('aeiou'.includes(ch)) {
                    v++;
                }
            }
        }
        c -= v;
        return c === 0 ? 0 : Math.floor(v / c);
    }
    
    

All Problems

All Solutions