
2026-05-23元音辅音得分。用go语言给定只包含小写英文字母、空格和数字的字符串 s。统计元音字母的数量 v元音字母为 a、e、i、o、u。统计辅音字母的数量 c除上述元音外的所有英文字母都算作辅音空格和数字不计入 v 或 c。计算规则若 c 0则得分为 ⌊v / c⌋把 v 除以 c 后向下取整。若 c 0则得分为 0。输出 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用于统计元音字母的数量初始值为 0c用于统计辅音字母的数量初始值为 0。第二步遍历字符串的每一个字符函数通过循环逐个取出字符串s中的每一个字符对每个字符依次做判断和处理。第三步过滤非字母字符对当前遍历到的字符先判断是否为英文字母如果字符是空格、数字非字母直接跳过当前字符不进行任何统计继续遍历下一个字符如果字符是英文字母则进入下一步的元音/辅音判断。第四步区分元音字母和辅音字母针对筛选出的英文字母进一步判断是否为元音字母a、e、i、o、u如果字符是元音字母将元音计数器v的值加 1如果字符不是元音字母即辅音字母将辅音计数器c的值加 1。第五步遍历结束统计完成当字符串中所有字符都遍历完成后v和c就分别存储了当前字符串中元音字母的总数量和辅音字母的总数量。以输入s cooear为例遍历后统计元音v 4o、o、e、a辅音c 2c、r。第六步按照规则计算最终得分根据题目规则判断并计算得分首先检查辅音数量c是否大于 0如果c 0计算v 除以 c的结果并向下取整整数除法自动向下取整将该值作为函数返回值如果c 0直接返回 0 作为得分。示例中c20计算4/22返回结果 2。第七步主函数调用与输出结果程序的主函数main中定义输入字符串s cooear调用核心函数vowelConsonantScore传入字符串获取计算结果通过打印语句输出最终结果 2。时间复杂度与额外空间复杂度分析1. 总时间复杂度时间复杂度取决于字符串的遍历操作程序只对输入字符串进行了一次从头到尾的遍历遍历次数等于字符串的长度n遍历过程中的每一步操作判断是否为字母、判断是否为元音都是常数时间 O(1)的操作没有嵌套循环、递归等耗时操作。因此总时间复杂度为 O(n)n 为输入字符串的长度。2. 总额外空间复杂度额外空间复杂度指除了输入数据本身外程序运行时额外开辟的内存空间程序仅定义了几个固定的变量v、c、循环字符变量这些变量的内存占用是固定常数不随输入字符串长度变化没有使用切片、map、数组等会随输入规模增长的动态数据结构仅用到了固定字符串aeiou属于常量空间。因此总额外空间复杂度为 O(1)常数级空间。总结执行过程初始化计数→遍历字符→过滤非字母→统计元音/辅音→按规则计算得分→输出结果时间复杂度O(n)n 为字符串长度额外空间复杂度O(1)常数空间。Go完整代码如下packagemainimport(fmtstringsunicode)funcvowelConsonantScore(sstring)int{v,c:0,0for_,ch:ranges{if!unicode.IsLetter(ch){continue}ifstrings.ContainsRune(aeiou,ch){v}else{c}}ifc0{returnv/c}return0}funcmain(){s:cooearresult:vowelConsonantScore(s)fmt.Println(result)}Python完整代码如下# -*-coding:utf-8-*-importstringdefvowel_consonant_score(s:str)-int:v0c0vowelsset(aeiou)forchins:ifnotch.isalpha():continueifchinvowels:v1else:c1ifc0:returnv//c# 使用整数除法与 Go 的 int 除法行为一致return0defmain():scooearresultvowel_consonant_score(s)print(result)if__name____main__:main()C完整代码如下#includeiostream#includestring#includecctypeintvowelConsonantScore(conststd::strings){intv0,c0;for(charch:s){if(!std::isalpha(static_castunsignedchar(ch))){continue;}charlowerChstd::tolower(static_castunsignedchar(ch));if(lowerCha||lowerChe||lowerChi||lowerCho||lowerChu){v;}else{c;}}if(c0){returnv/c;}return0;}intmain(){std::string scooear;intresultvowelConsonantScore(s);std::coutresultstd::endl;return0;}