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

给定一个以字符串表示的非负整数 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();

    }

}

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

你可能感兴趣的:(数据结构,Java基础,leetcode,算法,java,数据结构)