字符串形式的整数,删除k位,使得到的数字最小

参加一公司的面试,其中一题如下:
字符串形式的整数,删除k位,使得到的数字最小。如“10239”,删除1位,得到最小数239;“14329”,删除3位,最小数为129。
思路:若高位比低位大,则删除
代码:

def removeDigits(num,k):
    i=0
    while i<len(num)-1 and k>0:
        if int(num[i])>int(num[i+1]):
            num=num[:i]+num[i+1:] #删掉i位置的值
            k-=1
            if i>0:   #这种情况处理的是第一位没有删掉,需要重头判断,所以i要递减;若第一位已删掉,此时i=0,不作处理,仍是从头判断
                i-=1
        else:
            i+=1
     return str(int(num[:len(num)-k])) #这里为啥不直接返回num?因为有高位比低位小的情况,没有删除到k位,如“10345”,删除3位,得到0345,只删除一位,k=1,所以取num[:2]即03,再通过int去掉0,再用str转为字符。

半路出家学算法,所以记录详细点。

你可能感兴趣的:(字符串形式的整数,删除k位,使得到的数字最小)