Leetcode 402. 移掉K位数字

Posted randyniu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 402. 移掉K位数字相关的知识,希望对你有一定的参考价值。

// 贪心算法,当前遇到的数,比栈顶的元素小,就将栈顶元素给弹出,直至遇到比栈顶大或者是栈为空才停止,字符串保证是一个正常的数字序列。
class
Solution { public: string removeKdigits(string num, int k) { std::vector<int> S;//为了遍历,因此可以用vector来进行模拟。 std::string result = "";// 保存最后的结果 for(int i=0; i<num.size(); ++i) //开始遍历整个string { int number = num[i] - 0;// 算出当前的值 while(S.size()>0 && number<S[S.size()-1] && k>0)// 开始进行贪心判断 { S.pop_back(); --k; }// 否则,如果number是0 并且S中有元素照样可以放置进去 if(number!=0 || S.size()!=0) { S.push_back(number); } }//已经遍历完了所有的字符序列 这个时候如果k>0 仍需要进行弹出,这个时候,栈中的元素就是按照升序进行存储的了。 while(S.size()!=0 && k>0) { S.pop_back(); --k; } for(int i=0; i<S.size(); ++i) { result.append(1, 0+S[i]); } if(result == "") result = "0"; return result; } };

 


以上是关于Leetcode 402. 移掉K位数字的主要内容,如果未能解决你的问题,请参考以下文章

402. 移掉 K 位数字

LeetCode 0402. 移掉 K 位数字

402. 移掉 K 位数字(中等)

LeetCode402移除K位数字

402. 移掉K位数字

402. 移掉 K 位数字-贪心