LeetCode 第402题:移掉K位数字

LeetCode 第402题:移掉K位数字_第1张图片
题目描述
  • 解题思路:本题的本质是使用单调栈来解题,此单调栈维持了一个从小到大的顺序。而且,还维持了整个字符串数字的顺序,所以可以用来解题。
// 我这种解法其实不是最优的,并且还很慢。但是因为单调栈的思想很重要,可以解决一系列问题,所以还是推荐使用这种方法。
class Solution {
    public String removeKdigits(String num, int k) {
        int n = num.length() - k;
        Stack stack = new Stack<>();
        for(char ch : num.toCharArray()){
            while(k > 0 && !stack.isEmpty() && stack.peek() > ch){
                stack.pop();
                k--;
            }
            stack.push(ch);
        }

        String res = "";
        while(!stack.isEmpty() && stack.get(0) == '0'){
            stack.remove(0);
            n--;
        }
        for(int i = 0; i < n; i++){
            res += stack.get(i);
        }
        return res.length() == 0 ? "0" : res;
    }
}

你可能感兴趣的:(LeetCode 第402题:移掉K位数字)