Algorithm
LeetCode
유효한 팰린드롬(자바)

문제 링크

https://leetcode.com/problems/valid-palindrome/ (opens in a new tab)

풀이

Java

class Solution {
    public boolean isPalindrome(String s) {
      int start = 0;
      int end = s.length() - 1;
 
      while(start < end) {
        if(!Character.isLetterOrDigit(s.charAt(start))) {
          start++;
        } else if(!Character.isLetterOrDigit(s.charAt(end))) {
          end --;
        } else {
          if(Character.toLowerCase(s.charAt(start)) != Character.toLowerCase(s.charAt(end))) {
            return false;
          }
          start++; 
          end--;
        }
      }
      return true;
    }
}

Python

class Solution:
    def isPalindrome(self, s: str) -> bool:
      left, right = 0, len(s) - 1
      while left <= right :
        if not s[left].isalnum() :
          left += 1
        elif not s[right].isalnum() : 
          right -= 1
        elif s[left].upper() != s[right].upper() :
          return False
        else :
          left += 1
          right -= 1
 
      return True

문자열 검사함수

isalnum()

문자 + 숫자인지 검사하는 함수

print("abcs12".isalnum()) # True
print("abcs12#".isalnum()) # False

isalpha()

문자인지 검사하는 함수

print("abcs12".isalnum()) # False
print("abcs12#".isalnum()) # False

isdigit()

숫자인지 검사하는 함수