力扣算法 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 <= 20word由英文大写和小写字母、数字、'@'、'#'和'$'组成。
解法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;
}
}

浙公网安备 33010602011771号