码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode 402. 移掉K位数字

时间:2018-07-19 10:55:09      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:str   leetcode   ++   tor   停止   vector   size   rem   贪心   

// 贪心算法,当前遇到的数,比栈顶的元素小,就将栈顶元素给弹出,直至遇到比栈顶大或者是栈为空才停止,字符串保证是一个正常的数字序列。
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位数字

标签:str   leetcode   ++   tor   停止   vector   size   rem   贪心   

原文地址:https://www.cnblogs.com/randyniu/p/9334144.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!