使用栈来解题。
主要思想:一个n位数,如果第i位比第i+1位要大,那么删掉第i位得到的数要比删掉第i+1位得到的数要小。
给定一个栈,result
入栈过程:
int i = 0;
while(i < num.size()){
while(k && result.size() && result.back() > num[i]){
result.pop_back();
k--;
}
result.push_back(num[i++]);
}
最后答案:
class Solution {
public:
string removeKdigits(string num, int k) {
string result = "";
int i = 0;
while(i < num.size()){
while(k && result.size() && num[i] < result.back()){
result.pop_back();
k--;
}
result.push_back(num[i++]);
}
i = 0;
while(i < result.size()){
if(result[i] != '0')
break;
i++;
}
result = result.substr(i, result.size() - k);
return result.empty() ? "0" : result;
}
};