Search

Clear Digits

문제 설명 : 제공된 문자열 중 문자+숫자가 붙은 문자열을 순차적으로 삭제하여 반환
풀이 방법
숫자로 존재하는 문자와 그 왼쪽에 있는 문자를 삭제한다.
다만 삭제된 인덱스는 공백이기 때문에, 이후 삭제 작업을 위해 직전 인덱스를 탐색하는 코드도 추가하였다.
시간복잡도 : O(N2)O(N^2)
성공 코드
# O(N^2 + N) = O(N^2) class Solution: def clearDigits(self, s: str) -> str: # 숫자인지 확인 def is_number(ch): return 48 <= ord(ch) <= 57 result = list(s) # O(N) for i in range(1, len(s)): # 이미 공백이 된 문자를 건너뛰고, 가장 가까운 문자가 있는 인덱스를 찾는다. # O(N) before_index = i - 1 while before_index >= 0 and result[before_index] == '': before_index -= 1 # 찾은 문자가 조건에 맞는지 확인 if not is_number(s[before_index]) and is_number(s[i]): result[before_index] = '' result[i] = '' # O(N) return ''.join(result)
Python
복사