문제
문제 설명
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 “a234”이면 False를 리턴하고 “1234”라면 True를 리턴하면 됩니다.
제한 사항
- s는 길이 1 이상, 길이 8 이하인 문자열입니다.
입출력 예
s return “a234” false “1234” true
제출 답안
class Solution {
public boolean solution(String s) {
// 1. 길이가 4또는 6인지 확인한다. 그게 아니라면 false 반환.
if(s.length() == 4 || s.length() == 6){
char [] c = s.toCharArray();
// 3. 그렇다면 false 아니라면 true 반환.
for(int i = 0; i < c.length; i++){
if(isText(c[i])) return false;
}
return true;
}
return false;
}
// 2. 혹시 대문자일지도 모르니 문자형 소문자로 바꿔고 소문자 a의 아스키코드보다 높은지 확인한다.
private boolean isText(int a){
return Character.toLowerCase(a) > 61;
}
}
+
이걸 정규화 표현식으로 한줄로 풀 수 있었는데 아래 한줄이면 문자열 길이, 숫자확인 다 가능했다.
return s.matches("^[0-9]{4}|{6}$");