思路:借助单调栈,在遍历过程中,每个元素入栈时比较栈顶元素与当前元素的大小,大于则出栈,该操作进行K次。
class Solution {
public:
string removeKdigits(string num, int k) {
if(k>=num.size()) return "0";
string res="";
int len=num.size()-k;
vector<char>arr;
for(char c:num){
while(k>0&&!arr.empty()&&arr.back()>c){
arr.pop_back();
k--;
}
arr.push_back(c);
}
int i=0;
//去除开始的0
while(i<arr.size()&&arr[i]=='0') i++;
for(;i<len;i++){
res+=arr[i];
}
//判断结果
return res==""?"0":res;
}
};