주어진 문자열이 팰린드롬인지 확인하라. 대소문자를 구분하지 않으며, 영문자와 숫자만을 대상으로 한다
예제 1.
"A man, a plan, a canal: Panama"
true
예제 2.
"race a car"
false
test_1 = "A man, a plan, a canal: Panama"
test_2 = "race a car"
def fn(text):
origin = [x.lower() for x in text if x.isalnum()]
reverse = [x.lower() for x in text[::-1] if x.isalnum()]
if origin == reverse:
return True
else:
return False
fn(test_1)
True
fn(test_2)
False
[x.lower() for x in test_1 if x.isalnum()]
['a', 'm', 'a', 'n', 'a', 'p', 'l', 'a', 'n', 'a', 'c', 'a', 'n', 'a', 'l', 'p', 'a', 'n', 'a', 'm', 'a']
[x.lower() for x in test_1[::-1] if x.isalnum()]
['a', 'm', 'a', 'n', 'a', 'p', 'l', 'a', 'n', 'a', 'c', 'a', 'n', 'a', 'l', 'p', 'a', 'n', 'a', 'm', 'a']
[x.lower() for x in test_2 if x.isalnum()]
['r', 'a', 'c', 'e', 'a', 'c', 'a', 'r']
[x.lower() for x in test_2[::-1] if x.isalnum()]
['r', 'a', 'c', 'a', 'e', 'c', 'a', 'r']
Success
Details
Runtime: 56 ms, faster than 32.76% of Python3 online submissions for Valid Palindrome.
Memory Usage: 25.3 MB, less than 6.97% of Python3 online submissions for Valid Palindrome.
Next challenges:
Palindrome Linked List
Valid Palindrome II
Show off your acceptance:
Time Submitted
Status
Runtime
Memory
Language
02/06/2021 02:45 Accepted 56 ms 25.3 MB python3
def isPalindrome(self, s: str) -> bool:
strs = []
for char in s:
if char.isalnum():
strs.append(char.lower())
while len(strs) > 1:
if strs.pop(0) != strs.pop():
return False
return True
Accepted 280 ms 19.5 MB python3
import collections
def isPalindrome(self, s: str) -> bool:
strs: Deque = collections.deque()
for char in s:
if char.isalnum():
strs.append(char.lower())
while len(strs) > 1:
if strs.popleft() != strs.pop():
return False
return True
Accepted 44 ms 19.3 MB python3
import re
def isPalindrome(self, s: str) -> bool:
s = s.lower()
s = re.sub('[^a-z0-9]', '', s)
return s == s[::-1]
28 ms 15.6 MB python3
def isPalindrome(self, s: str) -> bool:
s = ''.join([x.lower() for x in s if x.isalnum()])
return s == s[::-1]
Accepted 48 ms 19.6 MB python3