문제 링크
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()
숫자인지 검사하는 함수