

단어는 다음과 같은 경우 유효한 것으로 간주됩니다:
* 최소 3자를 포함합니다.
* 숫자(0-9)와 영문(대소문자 및 소문자)만 포함되어 있습니다.
* 적어도 하나의 모음이 포함되어 있습니다.
* 자음이 하나 이상 포함되어 있습니다.
문자열 단어가 주어집니다.
단어가 유효하면 참으로 반환하고, 그렇지 않으면 거짓으로 반환합니다.
주의:
* 'a', 'e', 'i', 'o', 'u', 대문자는 모음입니다.
* 자음은 모음이 아닌 영어 문자입니다.
제약 조건:
* 1 <= word.length <= 20
* 단어는 대문자와 소문자, 숫자, '@', '#', '$로 구성됩니다.
내가 작성한 코드
class Solution {
public boolean isValid(String word) {
// 조건문과 주의사항을 준수하는 정규식
return word.matches("^(?=.*[AEIOUaeiou])(?=.*[BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz])[A-Za-z0-9]{3,}$");
}
}
다른 사람의 코드
class Solution {
public boolean isValid(String word) {
// 3글자 미만 걸러내기
if (word.length() < 3) {
return false;
}
boolean hasVowel = false; // 모음이 있는지 확인
boolean hasConsonant = false; // 자음이 있는지 확인
for (char c : word.toCharArray()) {
// 알파벳인지 확인
if (Character.isLetter(c)) {
char ch = Character.toLowerCase(c);
// 모음과 자음 확인
if (ch == 'a' ||
ch == 'e' ||
ch == 'i' ||
ch == 'o' ||
ch == 'u') {
hasVowel = true;
} else {
hasConsonant = true;
}
// 숫자 인지 확인
} else if (!Character.isDigit(c)) {
return false; // 아니면 특수문자 >> false
}
}
return hasVowel && hasConsonant; // 모음과 자음이 모두 있는지 확인
}
}
Share article