In [ ]:
def max_num(digits, k):
stack = []
drop = len(digits) - k
for digit in digits:
while len(stack) > 0 and drop > 0 and stack[-1] < digit:
stack.pop()
drop -= 1
stack.append(digit)
return "".join(stack[:k])
assert max_num("9512983", 1) == "9"
assert max_num("9512983", 3) == "998"
assert max_num("9512983", 7) == "9512983"