•
문제 링크 : LeetCodeClear Digits - LeetCode
•
문제 설명 : 제공된 문자열 중 문자+숫자가 붙은 문자열을 순차적으로 삭제하여 반환
•
풀이 방법
◦
숫자로 존재하는 문자와 그 왼쪽에 있는 문자를 삭제한다.
◦
다만 삭제된 인덱스는 공백이기 때문에, 이후 삭제 작업을 위해 직전 인덱스를 탐색하는 코드도 추가하였다.
•
시간복잡도 :
•
성공 코드
# 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
복사