🌊
よわよわエンジニアが解くLeetcode 125. Valid Palindrome
1つ目のアプローチ
英数字小文字に変換し、元の文字列と逆に並び替えた文字列を比較
''.join
文字列を区切りなしで結合する
cleand_s[::-1]
sequence[start:stop:step]
class Solution:
def isPalindrome(self, s: str) -> bool:
cleand_s = ''.join(c for c in s.lower() if c.isalnum())
return cleand_s == cleand_s[::-1]
2つ目のアプローチ
文字列を左右から比較
left_index < right_index
例えば、",....,"
のような入力があった場合、left_indexは5を超える前に内側のループと外側のループを抜ける。(While文はTrueの間は評価され続ける)
class Solution:
def isPalindrome(self, s: str) -> bool:
left_index, right_index = 0, len(s) -1
while left_index < right_index:
while (left_index < right_index) and (not s[left_index].isalnum()):
left_index += 1
while (left_index < right_index) and (not s[right_index].isalnum()):
right_index -= 1
if s[left_index].lower() != s[right_index].lower():
return False
left_index += 1
right_index -= 1
return True
Discussion