Algorithm101 [문자열 배열] 가장 긴 팰린드롬 부분 문자열 파이썬 알고리즘 인터뷰 159p 5 | Longest Palindromic Substring https://leetcode.com/problems/longest-palindromic-substring/ 이상 코드 class Solution: def longestPalindrome(self, s: str) -> str: # 팰린드롬 판별 및 투 포인터 확장 def expand(left: int, right: int) -> str: while left >= 0 and right < len(s) and s[left] == s[right]: left -= 1 right += 1 return s[left + 1:right] if len(s) < 2 or s == s[::-1]: return s result = '.. 2022. 1. 3. [문자열 배열] 문자열 뒤집기 파이썬 알고리즘 인터뷰 145p 244 | Reverse String https://leetcode.com/problems/reverse-string/ 내 코드 class Solution: def reverseString(self, s: List[str]) -> None: for i in range(len(s)//2): temp = s[i] s[i] = s[len(s)-i-1] s[len(s)-i-1] = temp sol = Solution() s = ["H","a","n","n","a","h"] sol.reverseString(s) print(s) 0부터 길이의 절반까지 범위 지정 임시 저장 변수를 지정하여 두 수의 위치 바꿈 이상 코드 투 포인터 이용 class Solution: def reverse.. 2021. 12. 31. 파이썬 알고리즘 인터뷰 | 8장 연결 리스트 런너(Runner) 기법 pg.210 연결 리스트를 순회할 때 2개의 포인터 동시에 사용 병합 지점이나 중간 위치, 길이 등 판별 시 유용하게 사용 연산자 실행 순서 pg. 214 if not l1 or l1 and l1.val > l2.val: if (not l1) or (l1 and (l1.val > l2.val)): 연산자 실행 순서 : not and or and 가 or 보다 먼저 숫자형인 경우 swap pg. 218 x += y y = x - y x -= y 추가 공간이 필요로 하지 않아 공간 복잡도 측면에서 효과적 2021. 11. 22. 파이썬 알고리즘 인터뷰 | 7장 배열 더했을 때 특정 값이 되는 배열 속 두 수를 찾을 때 if complement in nums[i + 1:]: return [nums.index(n), nums[i + 1:].index(complement) + (i + 1)] target = 6, nums = [3, 3] 인 경우 return 두 번째 값이 nums.index(complement) 면 [0, 0] 을 반환 -> nums[i + 1:] 으로 슬라이싱 후 (i + 1) 값 더해준다 in 은 파이썬 레벨에서 매번 값을 비교하는 것에 비해 훨씬 빨리 수행됨 max value 비교하여 교체할 때 pg. 195 max_price = 0 for ~ max_price = max(prices[j] - price, max_price) max 값으로 비교하여.. 2021. 11. 22. 파이썬 알고리즘 인터뷰 | 6장 문자열 조작 문자 숫자로 이루어져 있는지 판별 pg. 139 for char in s: # isalunum() - check alphabet or numeric if char.isalnum(): strs.append(char.lower()) isalnum() - 문자/숫자로 이루어져 있는지 판별 isalpha() - 문자(영어/한글)로 이루어져 있는지 판별 isdigit() - 숫자로 이루어져 있는지 판별 투 포인터를 이용한 스왑 pg. 145 left, right = 0, len(s)-1 while left < right: # in one line, don't need to use temporary storage variable s[left], s[right] = s[right], s[left] left += 1 .. 2021. 11. 22. 이전 1 ··· 14 15 16 17 다음 반응형