博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法46----移除K位数字
阅读量:7121 次
发布时间:2019-06-28

本文共 1477 字,大约阅读时间需要 4 分钟。

一、题目:移除K位数字

给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。

注意:

  • num 的长度小于 10002 且 ≥ k。
  • num 不会包含任何前导零。

示例 1 :

输入: num = "1432219", k = 3输出: "1219"解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。

示例 2 :

输入: num = "10200", k = 1输出: "200"解释: 移掉首位的 1 剩下的数字为 200. 注意输出不能有任何前导零。

示例 3 :

输入: num = "10", k = 2输出: "0"解释: 从原数字移除所有的数字,剩余为空就是0。

思路1:

采用一个栈:若栈最后一个元素比num中当前元素大,则存入栈中,否则将栈中最后一个元素删除。当K==0时停止。

代码1:

def removeKdigits(self, num, k):        """        :type num: str        :type k: int        :rtype: str        """        #采用栈        if not num:            return None        if k == 0:            return num                stack =[]        res = ""        for n in num:            while k>0 and stack and int(stack[-1]) > int(n):                k -= 1                stack.pop()            if n.isdigit():                stack.append(n)        print(stack)        res = "".join(stack)        if k>0:            m = len(stack)-k            res = "".join(stack[:m])             print(res)        return str(int(res)) if res else "0"

 

思路2:

若num前一个元素比后一个元素大,则删除。直到k==0

代码2:

def removeKdigits(self, num, k):        if k>len(num)-1:            return "0"        i = 0        while i< len(num)-1 and k>0:            if int(num[i]) > int(num[i+1]):                num = num[:i]+num[i+1:]                if i>0:                    i-=1                k-=1            else:                i+=1        num = num[:len(num)-k]        return str(int(num))

 

转载于:https://www.cnblogs.com/Lee-yl/p/9942990.html

你可能感兴趣的文章
如何使用 GitHub Flow 给开源项目贡献代码
查看>>
声明 NSString 类型的属性,到底用 strong 还是 copy ?
查看>>
gulp如何打包css、sass编译、自动加css前缀、js压缩、es6转换es5
查看>>
用python批量替换MD文件中的图片地址
查看>>
Linux vi/vim编辑器按键说明
查看>>
Alfred配合翻译功能, 让英语更简单
查看>>
Java面试:投行的15个多线程和并发面试题
查看>>
天天生鲜项目学习之-项目创建
查看>>
数据结构与算法--排序(JS实现)
查看>>
面试知识点突击
查看>>
MySQL-训练题实践
查看>>
Quart2D 画图一 (简单画线、形状)
查看>>
javaScript(三):原型链(共用属性)
查看>>
free VIRL lab
查看>>
JS笔试题中的类型转换
查看>>
java B2B2C springmvc mybatis仿淘宝电子商城系统
查看>>
好的文章整理
查看>>
2018-08-14 打造有态度的---区块链新社区
查看>>
高性能缓存服务器 nuster 1.7.9.8 发布
查看>>
监听浏览器后退事件
查看>>