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; } };