[栈] leetcode 402 Remove K Digits

problem:https://leetcode.com/problems/remove-k-digits

         单调栈。维护一个递增的栈,每pop一次意味着移除了一个元素,k--。减为0时不再移除。前导0处理起来很麻烦,很容易WA。

class Solution {
public:
    string removeKdigits(string num, int k) {
        string res;
        for(int i = 0;i < num.size(); i++)
        {
            if(res.size() && res.front() == '0') res = res.substr(1);
            while(k && !res.empty() && num[i] < res.back())
            {
                res.pop_back();
                k--;
            }
            
            res.push_back(num[i]);
        }
        while(k && res.size())
        {
            k--;
            res.pop_back();
        }
        return res.empty() ? "0" : res;
    }
};

猜你喜欢

转载自www.cnblogs.com/fish1996/p/11331982.html