팰린드롬: 앞뒤가 똑같은 단어나 문장으로, 뒤집어도 같은 말이 되는 단어 또는 문장을 의미한다.
isalnum() : 영문자 , 숫자 여부를 판별하는 함수
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(): # popleft() O(1) ,pop(0) O(n)
return False
return True
자료형을 데크로 선언하여 시간 단축한 문제풀이 코드
def isPalindrome(self, s:str)->bool:
s = s.lower()
#정규식을 통한 불필요한 문자 필터링
s = re.sub('[^a-z0-9]','',s)
return s == s[::-1] # 문자열을 뒤집는 기능
정규식과 슬라이싱을 사용한 문제풀이 코드
def reverseString(self, s: List[str])->None:
s.reverse() # s[:] = s[::-1] (o) / s = s[::-1] (x)
문자열 뒤집는 코드
isdigit() : 숫자 여부인지 판별하여 구분
def mostConnonWord(self, paragraph: str, banned: List[str]) ->str:
words = [word for word in re.sub(r'[^\w]',' ',paragraph)
.lower().split() if word not in banned]
counts = collections.Counter(words)
return counts.most_common(1)[0][0]
가장 흔한 단어 출력하는 코드
애너그램 : 일종의 언어유희로 문자를 재배열하여 다른 뜻을 가진 단어로 바꾸는 것
애너그램을 판단하는 간단한 방법은 정렬하여 비교하는 것
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
anagrams = collections.defaultdict(list)
for word in strs:
anagrams[''.join(sorted(word))].append(word)
return list(anagrams.values())
sorted() : key=옵션을 지정해 정렬을 위한 키, 함수를 별도로 지정한다.
Ex) sorted(c, key=len) : 정렬을 위한 함수로 길이를 지정
a=['cde','cfc','abc']
def fn(s):
return s[0],s[-1]
print(sorted(a,key=fn))
>>> ['abc', 'cfc', 'cde']
fn 함수를 이용하여 첫번째첫 번째 키는 첫 문자열/ 첫 번째 키가 동일할 경우 두 번째 키인 마지막 문자열 순으로 정렬하도록 지정함
'책 요약 정리 > 파이썬 알고리즘 인터뷰' 카테고리의 다른 글
7장_ 배열 요약 정리 (0) | 2022.02.16 |
---|---|
5장 _ 리스트, 딕셔너리 요약정리 (0) | 2022.02.16 |
4장_빅오,자료형 요약정리 (0) | 2022.02.16 |
3장_파이썬 요약정리 (0) | 2022.02.16 |