6장 1번
- 문자열 활용 함수
isalnum()
문자열이 영어,한글 혹은 숫자로 되어있으면 True, 아니면 False (공백도 False를 리턴한다.)
lower()
문자열 영어의 대문자를 소문자로 변환한다.
pop()
리스트의 맨 마지막 요소를 돌려주고 그 요소는 삭제한다. 단, pop(0)을 하면 인덱스의 맨 앞의 값을 가져올 수 있다.
답지 풀이1(pop)
class Solution: def isPalindrome(self, s:str) -> bool: strs = [] for char in s: if char.isalnum(): strs.append(char.lower()) while len(strs) >1: #문자열이 1개 남을때까지 if strs.pop(0) !=strs.pop(): #맨앞에서부터 pop을 한것과 맨뒤에서부터pop을 한것을 비교 return False return True
Deque, collection
답지 풀이2(데크 자료형)
class Solution: 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
re.sub('패턴','바꿀문자열','문자열',바꿀횟수)
답지 풀이3(정규식)
class Solution: def isPalindrome(self, s: str) -> bool: s = s.lower() s = re.sub('[^a-z0-9]','', s) return s == s[::-1]
나의 풀이
class Solution: def isPalindrome(self, s: str) -> bool: strs = [] for char in s: if char.isalnum(): strs.append(char.lower()) return strs == strs[::-1]
- 참조링크
Link: [문자열활용][https://m.blog.naver.com/PostView.nhn?blogId=zlatmgpdjtiq&logNo=221302490913&proxyReferer=https:%2F%2Fwww.google.com%2F]
2번
답지 풀이(정규식)
class Solution:
def reverseString(self, s: List[str]) -> None:
s.reverse()
나의 풀이
class Solution:
def reverseString(self, s: List[str]) -> None:
return s[::-1]
- 주의 s[::-1]은 공간 복잡도 O(1)로 제한하였기때문에 O(n)으로 초과했다?
3번
'코딩테스트(python)' 카테고리의 다른 글
7장 9번 ~ 12번 (0) | 2021.05.30 |
---|---|
6장 4번 ~ 7장 2번 (0) | 2021.05.23 |
파이썬 알고리즘 인터뷰 (0) | 2021.05.16 |