파이썬 알고리즘 인터뷰를 보고 알고리즘이라고 해야 되나 자료구조라고 해야 되나 공부를 다시 조금씩 하는 중입니다. 이책에서는 리트코드 문제를 풀어서 영어 공부도 되지 않을까라는 생각에 책을 골랐는데 생각보다 많이 어려운 거 같아요.
문자열을 뒤집어도 같은 경우에는 똑같은 경우에는 true를 반환해주고 다른 경우에는 false로 반환해주면 되는 문제
문제를 보고 필요하다고 생각했던 것들은 아래와 같다.
- 문자열들만 비교를 해줘야 되서 특수문자 다 빼주기
- 문자열 뒤집는 걸 어떤 걸 써서 해줄지
그래서 각 항목 마다 써줄려고 했던 요소들은 아래와 같다.
정규표현식 문자열 치환 - re.sub("[^a-zA-Z0-9]", "", s)
- 첫 번째 인자 : [^a-zA-Z0-9]
- 두 번째 인자 : 첫 번째 인자에 해당하는 경우에 두 번째 인자로 변경
- 세 번째 인자 : 타입
문자열 Slice
- str[::-1] → 이런방식으로 접근하는 방법을 Extended Slices라고 함.
전체 코드는 다음과 같다.
import re
class Solution:
def isPalindrome(self, s: str) -> bool:
new_str = re.sub("[^a-zA-Z0-9]", "", s)
new_str = new_str.lower()
rvs_str = new_str[::-1]
if new_str == rvs_str:
return True
else:
return False
'DEV > 알고리즘 문제 풀이' 카테고리의 다른 글
[자료구조/알고리즘] - 배열/array (0) | 2023.05.08 |
---|---|
LEETCODE(리트코드) 49번 Group Anagrams (0) | 2022.11.25 |
알고리즘 다시 공부하기 3일차 (0) | 2022.09.12 |
알고리즘 다시 공부하기 2일차 (3) | 2022.09.11 |