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; } };
原文地址:https://www.cnblogs.com/fish1996/p/11331982.html
时间: 2024-10-08 16:03:56