[LeetCode] 125 Valid Palindrome
質問する
指定した文字列がパリンdromであるかどうかを確認します.大文字と小文字を区別せず、アルファベットと数字のみ
パリンドロム:前後の同じ単語や文、ひっくり返しても同じ単語や文をパリンドロムと言います。
例1
"A man, a plan, a canal: Panama"
true
例2
"race a car"
false
私の答え
この問題は大文字と小文字を区別せず、アルファベットと数字だけを対象にしている.
したがって、最初に与えられた文字列では、数値と英語の文字が新しいリストに登録されます.英語の大文字と小文字を区別せず、小文字に変更します.
次に、元の文字列とその文字列を比較して、パリンドロンかどうかを確認します.ファリン症候群ならTrue、またはFalseに戻ります.
class Solution:
def isPalindrome(self, s: str) -> bool:
# 나의 풀이
answer = False
s = list(s)
only_char = []
# 숫자와 문자만 뽑아서 새로운 리스트에 저장
for i in s:
if i.isdigit():
only_char.append(i)
if i.isalpha():
only_char.append(i.lower())
# origin = 원형
# reverse_origin = 원형을 뒤집은 것(슬라이싱 사용)
origin = only_char
reverse_origin = only_char[::-1]
if origin == reverse_origin:
answer = True
return answer
このようにして問題を解いて、また3種類の問題を解く方法が増えて、分かち合いたいです.プール1-リストに変換
class Solution:
def isPalindrome(self, s: str) -> bool:
# 풀이1 리스트로 변환
s = list(s)
only_char = []
for i in s:
# 알파벳과 숫자일때
if i.isalnum():
only_char.append(i.lower())
# 문자열 앞과 끝을 동시에 pop 하면서 비교한다
while len(only_char) > 1:
if only_char.pop(0) != only_char.pop():
return False
return True
プール2-データ型を使用したデータの最適化
class Solution:
def isPalindrome(self, s: str) -> bool:
# 풀이2 데크 자료형 이용 -> 최적화
# 자료형 데크로 선언
strs = collections.deque()
for char in s:
if char.isalnum():
strs.append(char.lower())
# 데크 자료형의 popleft 함수를 이용한다
while len(strs) > 1:
if strs.popleft() != strs.pop():
return False
return True
解1はリスト型,解2はビッグデータ型を用いた.Dark資料型の解答2を使う速度が解答1より速いのは、なぜですか?その理由は,
while
文で資料の前後を比較する際に用いられるpop(0)
とpopleft()
の違いである.リストのpop()
はO(n)O(n)O(n)であり、デックのpopleft()
はO(1)O(1)O(1)O(1)O(1)である.データ・ウェアハウスを正しく使用すると、コードのパフォーマンスがさらに向上します.
プール3-スライドの使用
class Solution:
def isPalindrome(self, s: str) -> bool:
# 풀이3 슬라이싱 사용
s = s.lower()
# 정규식으로 불필요한 문자 필터링
s = re.sub('[^a-z0-9]', '', s)
return s == s[::-1]
このプールは、不要な文字を通常のフィルタリングした後、Pythonの文字列を使用してスライドします.一人で問題を解いたり、他の解答を見たりして、Dek、Sleing、正規式などを勉強し始めます.
以前は一人で問題を解決して、他の解答を見たり、他の方法で解いたりした経験がありません.いくつかのなぞなぞを見て、私はよく分からないPythonの文法と概念を知った.
出典:Pythonアルゴリズムインタビュー
Reference
この問題について([LeetCode] 125 Valid Palindrome), 我々は、より多くの情報をここで見つけました https://velog.io/@kimwoody/LeetCode-125-Valid-Palindromeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol