Pythonアルゴリズムインタビュー第6章文字列操作(有効なパリンドロン)
文字列アクション(1)
1)有効な法林症候群
指定した文字列がパリンdromであるかどうかを確認します.大文字と小文字を区別せず、アルファベットと数字のみを対象とします.
まず、上記の問題では、「法林症候群」の前で読んでも、李孝利は逆さまに読んで、李孝利のことを考えればいい.
つまり、同じ単語を前後に読むのも同じ意味です.
上記の問題では,与えられた条件は大文字と小文字を区別しない.
文字と数字のみ
特殊文字や英語文字ではないものはフィルタリングします.
この部分ではpopも使えますし、内蔵関数reverseも使えます!
githubリンク:
https://github.com/leeseungsoo0701/python_alogrithm/blob/main/string_change/leetcode/125_palindrome.py
leetcode 125
1)有効な法林症候群
指定した文字列がパリンdromであるかどうかを確認します.大文字と小文字を区別せず、アルファベットと数字のみを対象とします.
まず、上記の問題では、「法林症候群」の前で読んでも、李孝利は逆さまに読んで、李孝利のことを考えればいい.
つまり、同じ単語を前後に読むのも同じ意味です.
上記の問題では,与えられた条件は大文字と小文字を区別しない.
文字と数字のみ
特殊文字や英語文字ではないものはフィルタリングします.
この部分ではpopも使えますし、内蔵関数reverseも使えます!
"""
주어진 문자열이 팰린드롬인지 확인하라. 대소문자를 구분하지 않으며, 영문자와 숫자만을 대상으로 한다.
ex) "abba" -> True
"bbac" -> False
"""
###pop 방식
def isPalindrome(self, s: str) -> bool:
strs = []
#입력 받은 배열에 대하여 안의 원소들에 있어서 .isalnum()을 통하여 글자와 숫자만 새로운 배열 strs에 append하는데
for char in s:
if char.isalnum():
strs.append(char.lower()) ### 소문자로 치환해서 append 해주는 것이다(문제의 조건)
### strs 배열을 다 둘러봤을 때 맨 앞과 맨 뒤를 확인하기 위해서 pop을 사용하였고 위 과정이 중간에 걸린다면 false를 도출하도록 설계
while len(strs) > 1:
if strs.pop(0) != strs.pop():
return False
### while 안의 if문에서 걸리지 않을 시, 팰린드롬이기에 return을 True로 하였다.
return True
### reverse 방식
def isPalindrome(self, s: str) -> bool:
##valid_list에 for문 사용 그런데 i의 lower를 넣는 것이고 if문을 사용하여 i가 isalnum일때만 작동하여 위 리스트에 들어간다
valid_list = [i.lower() for i in s if i.isalnum()]
## 새로운 배열 rev_valid_list를 만들어 valid_list의 뒤에서부터 넣어준다
rev_valid_list = valid_list[::-1]
###같으면 True, 틀리면 False를 반환하여 팰린드롬임을 확인할 수 있다.
return valid_list == rev_valid_list
leetcodeリンク:https://leetcode.com/problems/valid-palindromegithubリンク:
https://github.com/leeseungsoo0701/python_alogrithm/blob/main/string_change/leetcode/125_palindrome.py
leetcode 125
Reference
この問題について(Pythonアルゴリズムインタビュー第6章文字列操作(有効なパリンドロン)), 我々は、より多くの情報をここで見つけました https://velog.io/@leeseungsoo0701/파이썬-알고리즘-인터뷰-6장문자열-조작テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol