Programming Language/Python
[LeetCode][Easy] Valid Palindrome 문제 Python 풀이
myungsup1250
2026. 2. 9. 10:46
영어 대소문자와 공백, 특수문자가 섞여 있는 문자열에서 영어 소문자만 가지고 회문 여부를 검증하는 문제.
실제로 요구하는 대로 소문자만 존재하는 문자열로 가공하여 회문 여부를 검증하는 방법과 주어진 문자열 그대로 투 포인터를 사용하여 문제를 해결하는 방법을 각각 구현해보았습니다.
문자열 가공 후 회문을 판단하는 방법:
class Solution:
def isPalindrome(self, s: str) -> bool:
lower = s.lower()
trimmed = str()
for ch in lower:
if ch.islower() or ch.isdigit():
trimmed += ch
for i in range(len(trimmed) // 2):
if trimmed[i] != trimmed[-i - 1]:
return False
return True
주어진 문자열 그대로 투 포인터로 문제를 해결하는 방법:
class Solution:
def isPalindrome(self, s: str) -> bool:
left = 0
right = len(s) - 1 # left, right = 0, len(s) - 1
while left < right:
while left < right and not s[left].isalnum():
left += 1
while left < right and not s[right].isalnum():
right -= 1
if s[left].lower() != s[right].lower():
return False
left += 1
right -= 1
return True