Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- digits = [int(x) for x in input()]
- n = len(digits)
- # search bound of intervals - all digit exist in interval
- intervals = [ n ]
- digit_exists = [ False ] * 10
- digit_counts = 0
- for i in range(n-1, -1, -1):
- if not digit_exists[ digits[i] ]:
- digit_exists[ digits[i] ] = True
- digit_counts += 1
- if digit_counts == 10:
- intervals.append(i)
- digit_exists = [ False ] * 10
- digit_counts = 0
- # search the answer
- answer = []
- m = len(intervals)
- left = 0
- for i in range(m-1, -1, -1):
- digit_exists = [ False ] * 10
- for j in range(left, intervals[i]):
- digit_exists[ digits[j] ] = True
- if left > 0 and not digit_exists[0]:
- mn_digit = 0
- else:
- mn_digit = 1
- while mn_digit < 10 and digit_exists[ mn_digit ]:
- mn_digit += 1
- if mn_digit == 10:
- answer.append(10)
- left = intervals[i-1] # !!! skip next interval
- else:
- answer.append(mn_digit)
- if i > 0:
- for j in range(intervals[i], intervals[i-1]):
- if digits[j] == mn_digit:
- left = j + 1
- break
- print(*answer, sep='')
Add Comment
Please, Sign In to add comment