문자열 내부 임의의 문자열
반복문으로 푸는 경우
int len = str.length();
if (len < 5) {
return false;
}
for (int i = 0; i <= len - 5; i++) {
String lowerStr = str.toLowerCase();
char c1 = lowerStr.charAt(i);
char c2 = lowerStr.charAt(i + 4);
if (c1 == 'a' && c2 == 'b') {
return true;
}
if (c1 == 'b' && c2 == 'a') {
return true;
}
}
return false;
정규식으로 푸는 경우
return str.matches("(?i)^(.*a...b.*|.*b...a.*)$");
matches()
: 현재 문자열이 주어진 정규 표현식과 일치하는지 검사
- 사용된 정규식 문법
(?i)
: 정규식 내에서 대소문자를 구분하지 않음을 나타내는 플래그
^
: 문자열의 시작
.*
: 임의의 문자가 0개 이상 나오는 문자열
a...b
: 'a'와 'b' 사이에 3개의 임의의 문자가 나오는 문자열
|
: 논리합
b...a
: 'b'와 'a' 사이에 3개의 임의의 문자가 나오는 문자열
$
: 문자열의 끝