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

如何从字符串中识别符合元音辅音交替规则(z为特例)的目标单词?

如何识别符合特定字符规则的目标单词

规则明确(结合示例修正细节)

先把规则结合示例理清楚,避免歧义:

  • 若单词全部由字母z组成,直接判定为符合规则;
  • 若单词包含非z的字母,则必须同时满足以下三点:
    1. 单词中同时包含元音字母(a/e/i/o/u)和辅音字母;
    2. 不存在两个元音字母连续相邻的情况;
    3. 不存在两个非z的辅音字母连续相邻的情况(z可以连续重复)。

实现思路

  1. 优先处理全z的特殊情况,直接返回符合;
  2. 对于非全z的单词:
    • 先检查是否同时包含元音和辅音,缺任意一种直接判定不符合;
    • 遍历每一对相邻字符,排查两种违规场景:连续元音、连续非z辅音,触发任意一种就直接返回不符合;
  3. 所有检查都通过则判定为符合规则。

代码实现

def is_valid_word(word):
    vowels = {'a', 'e', 'i', 'o', 'u'}
    # 处理全z的特殊情况
    if all(char == 'z' for char in word):
        return True
    # 检查是否同时包含元音和辅音
    has_vowel = any(char in vowels for char in word)
    has_consonant = any(char not in vowels for char in word)
    if not (has_vowel and has_consonant):
        return False
    # 遍历相邻字符,排查违规情况
    for i in range(len(word)-1):
        curr_char = word[i]
        next_char = word[i+1]
        # 检查连续元音
        if curr_char in vowels and next_char in vowels:
            return False
        # 检查连续非z辅音
        if curr_char not in vowels and next_char not in vowels and curr_char != 'z' and next_char != 'z':
            return False
    return True

# 测试给定示例
input_str1 = 'man'
input_str2 = 'king'
input_str3 = 'zzzz'
input_str4 = 'horse'

print(is_valid_word(input_str1))  # 输出: True
print(is_valid_word(input_str2))  # 输出: False
print(is_valid_word(input_str3))  # 输出: True
print(is_valid_word(input_str4))  # 输出: False

代码说明

  • 用集合存储元音字母,能更快判断字符是否为元音;
  • 全z判断、元音/辅音存在性检查都用了生成器表达式,简洁且高效;
  • 相邻字符检查时一旦发现违规就立即返回结果,避免不必要的遍历,提升性能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 10:12:47