Remove K Digits Posted on 2018-10-24 Descriptionhttps://leetcode.com/problems/remove-k-digits/ Solution1234567891011121314151617181920212223242526272829303132333435363738394041424344454647class Solution {public: struct cmp { bool operator() (pair<int, char>& left, pair<int, char>& right) { return left.second > right.second; } }; string removeKdigits(string num, int k) { if (num.size() <= k) return string("0"); //Check Zero int preNoZero = 0; int count = 0; int index = -1; for (int i = 0; i < num.size(); ++i) { if (num[i] == '0' && count <= k) { preNoZero = count; index = i; }else { count += 1; } } num.erase(0, index + 1); k -= preNoZero; int pick = num.size() - k; string ret; int last = 0; while (pick > 0) { char minum = '9' + 1; int targetIndex = -1; for (int i = last; i < num.size(); ++i) { if (num[i] < minum && num.size() - i >= pick) { minum = num[i]; targetIndex = i; } } --pick; ret += minum; num.erase(targetIndex, 1); last = targetIndex; } if (ret.size() == 0) return string("0"); return ret; }};