题目描述
给定一个十进制的正整数number,选择从里面去掉一部分数字,希望保留下来的数字组成的正整数最大。
输入描述:
输入为两行内容,第一行是正整数number,1 ≤ length(number) ≤ 50000。第二行是希望去掉的数字数量cnt 1 ≤ cnt < length(number)。
输出描述:
输出保留下来的结果。
示例1
输入
复制
325 1
输出
复制
35
python实现:
法一(只通过40%的样例):
if __name__ == '__main__':
d = int(input())
k = int(input())
a = []
while d:
t = d % 10
d = d / 10
a.append(int(t))
b = a[::-1]
c = []
f = 0
kk = len(b) - k
while kk:
s = max(b[f : len(b) - kk + 1])
t = b.index(s)
b[t] = -1
kk = kk - 1
f = t + 1
c.append(s)
s = str(c[0])
for i in range(1, len(c)):
s = s + str(c[i])
print s
法二:
思路:从左至右,比较两个数的大小,假如右边的数比左边的数小,则删掉该数,更新列表。假如到最后都没删掉指定个的数,则从前到后选取数即为答案,否则删完之后的列表即为答案。
if __name__ == '__main__':
d = list(raw_input())
k = int(input())
t = len(d)
i = 0
while k > 0 and i < t - 1:
if int(d[i]) >= int(d[i + 1]):
i = i + 1
else:
d.pop(i)
k = k - 1
t = t - 1
if i > 0:
i = i - 1
else:
i = 0
if k > 0:
print ''.join(d[:-k])
else:
print ''.join(d)