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, thescore = 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 <= 100sconsists 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); }