/*
402. 移掉K位数字
https://leetcode-cn.com/problems/remove-k-digits/
*/
class Solution {
public:
string removeKdigits(string num,int k) {
vector<char> stk;
for(string::iterator it = num.begin();it!=num.end();it++) {
while(stk.size()>0&&stk.back()>(*it)&&k) {
stk.pop_back();
k--;
}
stk.push_back(*it);
}
while(k--) {
stk.pop_back();
}
string ans = "";
int flag = 1;//标记前导0
for(vector<char>::iterator cur = stk.begin();cur!=stk.end();cur++) {
if(*cur=='0'&&flag) {
continue;
}
flag = 0;
ans+=(*cur);
}
return ans="" ?"0":ans;
}
};
LeetCode 402. 移掉K位数字 题解 单调栈 C/C++
于 2021-04-27 23:37:42 首次发布