
2025-10-25:找到频率最高的元音和辅音。用go语言,给你一个只包含小写英文字母的字符串 s。请分别在元音集合 {a, e, i, o, u} 和其余字母(即辅音)中找出各自出现次数最多的字母,然后把这两个最大出现次数相加并返回结果。若元音或辅音在字符串中完全未出现,则把对应的次数视为 0;若有多种字母并列为最高频,任选其中一种即可。字母的“出现次数”即该字母在 s 中出现了多少次。
1 <= s.length <= 100。
s 只包含小写英文字母。
输入: s = "successes"。
输出: 6。
解释:
元音有:'u' 出现 1 次,'e' 出现 2 次。最大元音频率 = 2。
辅音有:'s' 出现 4 次,'c' 出现 2 次。最大辅音频率 = 4。
输出为 2 + 4 = 6。
题目来自力扣3541。
首先,遍历字符串 s,用一个 map[byte]int 来记录每个字符出现的次数。
例如 s = "successes":
s → 4 次u → 1 次c → 2 次e → 2 次
其他字母未出现。初始化 vowel = 0 和 consonant = 0。
然后遍历 26 个小写字母 'a' 到 'z':
mp 中取出它的出现次数 count(如果没出现过就是 0)。a, e, i, o, u 之一):vowel = max(vowel, count)。consonant = max(consonant, count)。"successes" 的详细计算a → 0e → 2 → vowel = 2i → 0o → 0u → 1 → vowel = max(2, 1) = 2
所以元音最大频率 = 2。b ~ d 等略过c → 2 → consonant = 2s → 4 → consonant = max(2, 4) = 4
所以辅音最大频率 = 4。结果 = 2 + 4 = 6。
mp 最多存储 26 个不同字母的计数,所以额外空间是 O(26) 即 O(1)(因为字母表固定大小)。总额外空间复杂度:O(1)。
.
package main
import (
"fmt"
)
func maxFreqSum(s string)int {
mp := make(map[byte]int)
for i := 0; i < len(s); i++ {
mp[s[i]]++
}
vowel, consonant := 0, 0
for ch := 'a'; ch <= 'z'; ch++ {
count := mp[byte(ch)]
if isVowel(byte(ch)) {
vowel = max(vowel, count)
} else {
consonant = max(consonant, count)
}
}
return vowel + consonant
}
func isVowel(c byte)bool {
return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'
}
func main() {
s := "successes"
result := maxFreqSum(s)
fmt.Println(result)
}

.
# -*-coding:utf-8-*-
def max_freq_sum(s: str) -> int:
mp = {}
for char in s:
mp[char] = mp.get(char, 0) + 1
vowel = 0
consonant = 0
for ch in 'abcdefghijklmnopqrstuvwxyz':
count = mp.get(ch, 0)
if is_vowel(ch):
vowel = max(vowel, count)
else:
consonant = max(consonant, count)
return vowel + consonant
def is_vowel(c: str) -> bool:
return c in {'a', 'e', 'i', 'o', 'u'}
if __name__ == "__main__":
s = "successes"
result = max_freq_sum(s)
print(result)
我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展