题解 | #移掉 K 位数字#
移掉 K 位数字
http://www.nowcoder.com/practice/0fe685c8272d40f1b9785fedd2499c1c
单调栈的简单运用。
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param num string字符串
* @param k int整型
* @return string字符串
*/
string removeKnums(string num, int k) {
// write code here
stack<int> Stack;
for(int i = 0;i < num.size();){
if(Stack.empty()){
Stack.push(num[i] - '0');
++i;
}
else if(Stack.top() <= num[i] - '0' && Stack.size() != num.size() - k){
Stack.push(num[i] - '0');
++i;
}
else if(Stack.size() + num.size() - i != num.size() - k)
Stack.pop();
else{
Stack.push(num[i] - '0');
++i;
}
}
string ans;
while(!Stack.empty()){
ans = to_string(Stack.top()) + ans;
Stack.pop();
}
if(ans[0] == '0' && ans.size() != 1)
ans = ans.substr(ans.find_first_not_of('0'));
return ans.c_str();
}
};