class Solution {
public:
string removeKnums(string num, int k) {
stack<int> stk;
//维护递增栈,让小的数放在高位,
for(char digit:num){
while(!stk.empty() && k>0 && stk.top() > digit){
stk.pop();
k--;
}
stk.push(digit);
}
//可能还可以删除,从末尾删除
while(k>0 && !stk.empty()){
stk.pop();
k--;
}
//获得字符串
string result;
while(!stk.empty()){
result += stk.top();
stk.pop();
}
reverse(result.begin(), result.end());
//删除前导零
int leadingZero = 0;
while(leadingZero < result.size() && result[leadingZero] == '0'){
leadingZero++;
}
result = result.substr(leadingZero);
return result.empty()? "0":result;
}
};