力扣算法 3136题 有效单词

力扣算法 3136题 有效单词

题目:

有效单词 需要满足以下几个条件:

  • 至少 包含 3 个字符。
  • 由数字 0-9 和英文大小写字母组成。(不必包含所有这类字符。)
  • 至少 包含一个 元音字母
  • 至少 包含一个 辅音字母

给你一个字符串 word 。如果 word 是一个有效单词,则返回 true ,否则返回 false

注意:

  • 'a''e''i''o''u' 及其大写形式都属于 元音字母
  • 英文中的 辅音字母 是指那些除元音字母之外的字母。

示例 1:

输入:word = "234Adas"

输出:true

解释:

这个单词满足所有条件。

示例 2:

输入:word = "b3"

输出:false

解释:

这个单词的长度少于 3 且没有包含元音字母。

示例 3:

输入:word = "a3$e"

输出:false

解释:

这个单词包含了 '$' 字符且没有包含辅音字母。

提示:

  • 1 <= word.length <= 20
  • word 由英文大写和小写字母、数字、'@''#''$' 组成。

解法1:循环遍历字符判断

解析:这题是判断单词是否有效,需要用到Character包装类的一些方法,例如isLetterOrDigit(),判断是否是数字或字母,isLetter(),判断是否是字母。

class Solution {
    public boolean isValid(String word) {
        String validArray = "aoeiuAOEIU";

        int n = word.length();

        if (n < 3) return false;

        boolean hasValid = false, hasConsonant = false;

        for (int i = 0; i < n; i++){
            char c = word.charAt(i);
            //如果不是数字或字母,则返回false
            if(!Character.isLetterOrDigit(c)) return false;
            //判断是否是字母
            if(Character.isLetter(c)){
                //判断是否是元音字母
                if(validArray.indexOf(c) > -1) {
                    hasValid = true;
                }
                //否则是辅音字母
                else {
                    hasConsonant = true;
                }
            }
        }

        return hasConsonant && hasValid;
    }
}
posted @ 2025-11-21 09:21  戒爱学Java  阅读(13)  评论(0)    收藏  举报