leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
0402.cpp (823B)
0 class Solution { 1 class Solution { 2 public: 3 string removeKdigits(string num, int k) { 4 if (num.length() <= k) return "0"; 5 if (k == 0) return num; 6 7 string res = ""; 8 stack<char> s; 9 10 s.push(num[0]); 11 for (int i = 1; i < num.length(); ++i) { 12 while (k > 0 && !s.empty() && num[i] < s.top()) { 13 --k; 14 s.pop(); 15 } 16 s.push(num[i]); 17 if (s.size() == 1 && num[i] == '0') s.pop(); 18 } 19 20 while (k && !s.empty()) 21 --k, s.pop(); 22 23 while (!s.empty()) 24 res.push_back(s.top()), s.pop(); 25 26 reverse(res.begin(), res.end()); 27 return res.size() ? res : "0"; 28 } 29 };