
2026-05-23:元音辅音得分。用go语言,给定只包含小写英文字母、空格和数字的字符串 s。
计算规则:
输出 s 的得分。
1 <= s.length <= 100。
s 仅由小写英文字母、空格和数字组成。
输入: s = "cooear"。
输出: 2。
解释:
字符串 s = "cooear" 包含 v = 4 个元音字母 ('o', 'o', 'e', 'a') 和 c = 2 个辅音字母 ('c', 'r')。
得分为 floor(v / c) = floor(4 / 2) = 2。
题目来自力扣3813。
程序首先定义了核心计算函数 vowelConsonantScore,接收字符串参数 s,并在函数内部初始化两个整型变量:
v:用于统计元音字母的数量,初始值为 0;c:用于统计辅音字母的数量,初始值为 0。函数通过循环,逐个取出字符串 s 中的每一个字符,对每个字符依次做判断和处理。
对当前遍历到的字符,先判断是否为英文字母:
针对筛选出的英文字母,进一步判断是否为元音字母(a、e、i、o、u):
v 的值加 1;c 的值加 1。当字符串中所有字符都遍历完成后,v 和 c 就分别存储了当前字符串中元音字母的总数量和辅音字母的总数量。
以输入 s = "cooear" 为例:
v = 4(o、o、e、a),辅音 c = 2(c、r)。根据题目规则判断并计算得分:
c 是否大于 0;c > 0:计算 v 除以 c 的结果,并向下取整(整数除法自动向下取整),将该值作为函数返回值;c = 0:直接返回 0 作为得分。
示例中 c=2>0,计算 4/2=2,返回结果 2。程序的主函数 main 中:
s = "cooear";vowelConsonantScore 传入字符串,获取计算结果;时间复杂度取决于字符串的遍历操作:
n;因此,总时间复杂度为 O(n)(n 为输入字符串的长度)。
额外空间复杂度指除了输入数据本身外,程序运行时额外开辟的内存空间:
v、c、循环字符变量),这些变量的内存占用是固定常数,不随输入字符串长度变化;"aeiou",属于常量空间。因此,总额外空间复杂度为 O(1)(常数级空间)。
package main
import (
"fmt"
"strings"
"unicode"
)
func vowelConsonantScore(s string)int {
v, c := 0, 0
for _, ch := range s {
if !unicode.IsLetter(ch) {
continue
}
if strings.ContainsRune("aeiou", ch) {
v++
} else {
c++
}
}
if c > 0 {
return v / c
}
return0
}
func main() {
s := "cooear"
result := vowelConsonantScore(s)
fmt.Println(result)
}

# -*-coding:utf-8-*-
import string
defvowel_consonant_score(s: str) -> int:
v = 0
c = 0
vowels = set('aeiou')
for ch in s:
ifnot ch.isalpha():
continue
if ch in vowels:
v += 1
else:
c += 1
if c > 0:
return v // c # 使用整数除法,与 Go 的 int 除法行为一致
return0
defmain():
s = "cooear"
result = vowel_consonant_score(s)
print(result)
if __name__ == "__main__":
main()
#include <iostream>
#include <string>
#include <cctype>
int vowelConsonantScore(const std::string& s) {
int v = 0, c = 0;
for (char ch : s) {
if (!std::isalpha(static_cast<unsignedchar>(ch))) {
continue;
}
char lowerCh = std::tolower(static_cast<unsignedchar>(ch));
if (lowerCh == 'a' || lowerCh == 'e' || lowerCh == 'i' ||
lowerCh == 'o' || lowerCh == 'u') {
v++;
} else {
c++;
}
}
if (c > 0) {
return v / c;
}
return0;
}
int main() {
std::string s = "cooear";
int result = vowelConsonantScore(s);
std::cout << result << std::endl;
return0;
}
