3813. 元音辅音得分
February 6, 2026 · View on GitHub
题目描述
给你一个字符串 s,由小写英文字母、空格和数字组成。
令 v 表示 s 中元音字母的数量,c 表示辅音字母的数量。
元音字母是 'a'、'e'、'i'、'o' 和 'u',而英文字母表中除元音外的其他字母均视为辅音字母。
字符串 s 的 得分 定义如下:
- 如果
c > 0,则score = floor(v / c),其中floor表示 向下取整 到最接近的整数。 - 否则,如果
c = 0,则score = 0。
返回一个整数,表示字符串的得分。
示例 1:
输入: s = "cooear"
输出: 2
解释:
字符串 s = "cooear" 包含 v = 4 个元音字母 ('o', 'o', 'e', 'a') 和 c = 2 个辅音字母 ('c', 'r')。
得分为 floor(v / c) = floor(4 / 2) = 2。
示例 2:
输入: s = "axeyizou"
输出: 1
解释:
字符串 s = "axeyizou" 包含 v = 5 个元音字母 ('a', 'e', 'i', 'o', 'u') 和 c = 3 个辅音字母 ('x', 'y', 'z')。
得分为 floor(v / c) = floor(5 / 3) = 1。
示例 3:
输入: s = "au 123"
输出: 0
解释:
字符串 s = "au 123" 不包含辅音字母 (c = 0),因此得分为 0。
提示:
1 <= s.length <= 100s仅由小写英文字母、空格和数字组成。
解法
方法一:计数
我们遍历字符串,统计元音字母和辅音字母的数量,分别记为 和 。最后根据题意计算得分即可。
时间复杂度 ,其中 为字符串的长度。空间复杂度 。
Python3
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
Java
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;
}
}
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;
}
};
Go
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
}
TypeScript
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);
}