移掉K位数字
分析
维护一个单调递增的单调栈,顺序移除。
class Solution {
public:
string removeKdigits(string num, int k) {
stack<char>st;
if (!num.size())return "0";
for (int i(0); i < num.size(); i++) {
while (k && st.size() && num[i] < st.top()) {
st.pop();
k--;
}
if (num[i] == '0'&&st.size() == 0)continue;
st.push(num[i]);
}
while (k > 0 && st.size()) {
st.pop();
k--;
}
if (!st.size())return "0";
string s;
while (st.size()) {
s += st.top();
st.pop();
}
reverse(s.begin(), s.end());
return s;
}
};