https://leetcode.com/problems/valid-palindrome/
class Solution {
public boolean isPalindrome(String s) {
s = s.toUpperCase().replaceAll(" ", "").replaceAll("[^a-zA-Z0-9]|_", "");
String tmp = new StringBuilder(s).reverse().toString();
if (tmp.equals(s)) return true;
else return false;
}
}
문자열의 양 끝부터 순서대로 비교한다.
문자나 숫자가 아닌 경우(공백, 특수문자) 그 다음 인덱스의 문자를 비교한다.
문자를 비교했을 때 다른 경우 팰리드롬이 아니기 때문에 false
를 반환한다.
모든 문자열의 비교가 끝나면 팰리드롬 문자열이기 때문에 true를 반환한다.
class Solution {
public boolean isPalindrome(String s) {
int li = 0;
int ri = s.length() - 1;
char[] charArr = s.toLowerCase().toCharArray();
while (li <= ri) {
if (!Character.isLetterOrDigit(charArr[li])) li++;
else if (!Character.isLetterOrDigit(charArr[ri])) ri--;
else if(charArr[li++] != charArr[ri--]) return false;
}
return true;
}
}