반응형
01) 집합
- 대괄호, []은 집합을 나타내는 기호
-하이픈(-)은 범위를 나타내는 기호
- 캐럿(^)은 not을 의미한다.
문자 클래스:
위의 이론적 내용에 대한 복습을 위해서 리트코드 125번 문제를 가져와보겠다
https://leetcode.com/problems/valid-palindrome/
이 문제는 유효한 팰린드롬이라는 문제인데 이 문제를 가져온 이유는 문자열을 입력받을 때 좌우 대칭인지 확인하기 전에 소문자, 대문자를 제외한 나머지 부분은 삭제하는 전처리 과정을 거칠 필요가 있기 때문이다.
이와 같은 문자열 탐색에서 정규 표현식은 유용하게 이용된다.
public class solution {
public static void main(String args[]) {
String input = "AMAIIAMA";
P1 obj = new P1();
boolean isPalindrome = obj.isPalindrome(input);
System.out.println(isPalindrome);
}
public boolean isPalindrome(String s) {
String sLower = s.toLowerCase();
String sRemoved = sLower.replaceAll("[^a-zA-Z0-9]", ""); //정규표현식
String revStr = ""; //초기화
for(int i = sRemoved.length() - 1; i >= 0 ; i--) {
revStr += sRemoved.charAt(i);
}
if (sRemoved.equals(revStr)) {
return true;
}
return false;
}
}
위에서 replaceAll이라는 메소드를 사용하여 [^a-zA-z0-9]라는 정규 표현식에 포함되는 부분 즉, !, ?같은 소문자, 대문자, 숫자 전체에 대한 집합의 not gate로 묶은 나머지 느낌표나 물음표같은 기호를 제외하도록 하겠다는 의미를 포함하고 있다.
반응형
'lesson > REGex' 카테고리의 다른 글
정규 표현식 00. 시작 (2) | 2023.12.08 |
---|
댓글