python--n位数删除k位得到最小数

来源:互联网 发布:大数据平台 竞品分析 编辑:程序博客网 时间:2024/06/05 21:18
#! conding:utf-8__author__ = "hotpot"__date__ = "2017/11/8 13:06"class Solution:    """    @param: A: A positive integer which has N digits, A is a string    @param: l: Remove k digits    @return: A string    """    def DeleteDigits(self, A, l):        A_list = list(A)        flag = 0        print(A_list)        # write your code here        for _ in range(l):            for i in range(flag, len(A_list) - 1):                # 循环比较当前一位大于后一位的时候删除当前位,然后将下次遍历从删除位开始                if int(A_list[i]) > int(A_list[i + 1]):                    A_list.remove(A_list[i])                    flag = i - 1 if i - 1 > 0 else 0                    break                # 有可能数组是不减的数组,所以在最后一次比较的时候也没有办法break这次循环,那么就直接删除最后一位即可,同样需要将下次循环以前一位开始                elif i == len(A_list) - 2:                    A_list.remove(A_list[-1])                    flag -= 1        # 分成3种情况,因为首位为0必须将0删除,但是如果数组的长度只有1位那么就无需删除,如果最后数组的数据被全部删除,那么数组直接赋值为0        if len(A_list) > 1:            while A_list[0] == "0":                A_list.remove("0")        elif not A_list:            A_list = ["0"]        else:            pass        return "".join(A_list)

。,

阅读全文
0 0