You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

统计以Vowels(元音)或Consonants(辅音)开头的子串数量问题求解

问题解决思路

现有代码存在的问题

  • word.lower() 没有赋值给变量,转换后的小写字符串没有被后续逻辑使用
  • 仅实现了所有子串的打印,没有添加元音/辅音开头的计数逻辑
  • 三重循环的实现方式冗余,统计计数不需要枚举打印所有子串

可行实现逻辑

一个字符串中,从位置i(下标从0开始)开头的子串总数等于字符串总长度 - i,比如长度为5的字符串,下标0开头的子串有5个,下标1开头的有4个,以此类推。只需要判断每个开头位置的字符是元音还是辅音,直接累加对应数量即可,时间复杂度仅为O(n)。

修正后的代码

高效计数版(不需要打印子串)

# 输入直接转小写并赋值
word = input().lower()
vowels = "aeiou"
count_v = 0
count_c = 0
str_len = len(word)

for i in range(str_len):
    if word[i] in vowels:
        count_v += str_len - i
    else:
        count_c += str_len - i

print(f"元音开头的子串数量:{count_v} - 辅音开头的子串数量:{count_c}")

保留原打印子串功能版

word = input().lower()
vowels = "aeiou"
count_v = 0
count_c = 0
str_len = len(word)

for i in range(str_len):
    # 先统计当前开头对应的子串数量
    if word[i] in vowels:
        count_v += str_len - i
    else:
        count_c += str_len - i
    # 打印所有以i开头的子串
    for j in range(i, str_len):
        print(word[i:j+1])

print(f"元音开头的子串数量:{count_v} - 辅音开头的子串数量:{count_c}")

内容的提问来源于stack exchange,提问作者symb1anzxc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:54:03