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

Java实现单词元音与辅音交替模式的检测方案咨询

Java检测元音辅音交替模式的可行方案

方案一:正则表达式实现

你之前的正则仅覆盖了元音加辅音的单次匹配,要适配整个单词的交替规则,需要同时支持元音开头和辅音开头两种场景,还要兼容奇数长度的单词。完整正则如下:

String regex = "^([aeiouAEIOU][^aeiouAEIOU])*([aeiouAEIOU])?$|^([^aeiouAEIOU][aeiouAEIOU])*([^aeiouAEIOU])?$";

正则说明:

  • ^ 和 $ 确保匹配整个单词,避免部分匹配的情况
  • ([aeiouAEIOU][^aeiouAEIOU])* 匹配元音+辅音的重复组合,对应偶数长度的交替
  • ([aeiouAEIOU])? 允许末尾多一个元音,处理奇数长度的单词(比如"aba")
  • 后半段正则对应辅音开头的交替场景,逻辑和前半段一致

使用示例:

import java.util.regex.Pattern;

public class AlternateChecker {
    public static void main(String[] args) {
        String regex = "^([aeiouAEIOU][^aeiouAEIOU])*([aeiouAEIOU])?$|^([^aeiouAEIOU][aeiouAEIOU])*([^aeiouAEIOU])?$";
        Pattern pattern = Pattern.compile(regex);
        
        System.out.println(pattern.matcher("abc").matches()); // true
        System.out.println(pattern.matcher("aab").matches()); // false
        System.out.println(pattern.matcher("xyza").matches()); // true
        System.out.println(pattern.matcher("xyz").matches()); // false(全辅音无交替)
    }
}

方案二:手动字符遍历实现

如果觉得正则可读性差,也可以通过遍历字符逐一判断,逻辑更直观:

  1. 写一个辅助方法判断单个字符是否为元音
  2. 遍历单词的每个字符,对比当前字符与前一个字符的元音状态,若连续两个都是元音或都是辅音,则不符合规则

代码示例:

public class AlternateChecker {
    // 判断字符是否为元音
    private static boolean isVowel(char c) {
        return "aeiouAEIOU".indexOf(c) != -1;
    }

    public static boolean isAlternating(String word) {
        // 空字符串或单个字符直接符合条件
        if (word == null || word.length() <= 1) {
            return true;
        }

        boolean prevIsVowel = isVowel(word.charAt(0));
        for (int i = 1; i < word.length(); i++) {
            boolean currIsVowel = isVowel(word.charAt(i));
            // 连续两个同类型字符,直接返回false
            if (currIsVowel == prevIsVowel) {
                return false;
            }
            prevIsVowel = currIsVowel;
        }
        return true;
    }

    public static void main(String[] args) {
        System.out.println(isAlternating("abc")); // true
        System.out.println(isAlternating("aab")); // false
        System.out.println(isAlternating("xyza")); // true
        System.out.println(isAlternating("xyz")); // false
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:15:17