给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。
发布日期:2021-10-06 02:38:26 浏览次数:12 分类:技术文章

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

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

注意:

  • 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。

class Solution {

    public String removeKdigits(String num, int k) {

        if(num == null || ("").equals(num) || ("").equals(num.trim()) || k==0 ){

            return num;

        }

        if(num.length() <= k || num.length()>10002 ){

            return "0";

        }

        StringBuffer sb =  new StringBuffer(num);

        while(k>0) {

            int i=0;

            while(sb.length()-1>i && sb.charAt(i)<=sb.charAt(i+1)) {

                i++;

            }

            sb.delete(i, i+1);

            k--;

        }

        while(sb.length()!=0 && sb.charAt(0) == '0')

            sb.delete(0, 1);

        if(sb.length()==0)

            return "0";

        return sb.toString();

    }

}

转载地址:https://blog.csdn.net/luxuiary/article/details/105773502 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Redis持久化
下一篇:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月14日 13时00分55秒