如何从字符串中识别符合元音辅音交替规则(z为特例)的目标单词?
如何识别符合特定字符规则的目标单词
规则明确(结合示例修正细节)
先把规则结合示例理清楚,避免歧义:
- 若单词全部由字母z组成,直接判定为符合规则;
- 若单词包含非z的字母,则必须同时满足以下三点:
- 单词中同时包含元音字母(a/e/i/o/u)和辅音字母;
- 不存在两个元音字母连续相邻的情况;
- 不存在两个非z的辅音字母连续相邻的情况(z可以连续重复)。
实现思路
- 优先处理全z的特殊情况,直接返回符合;
- 对于非全z的单词:
- 先检查是否同时包含元音和辅音,缺任意一种直接判定不符合;
- 遍历每一对相邻字符,排查两种违规场景:连续元音、连续非z辅音,触发任意一种就直接返回不符合;
- 所有检查都通过则判定为符合规则。
代码实现
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
相关产品推荐
相关产品推荐

