Leetcode::Remove K digits

point

Design

Big O(time)

Code

class Solution {
public:
    vector<int> stk;
    string removeKdigits(string num, int k) {
        string ans = "";
        int pos = 0, n = (int) num.size();

        while(pos < n && k > 0) {
            if (stk.empty()) stk.push_back(num[pos++]);
            else {
                if (stk.back() > num[pos]) {
                    k--; stk.pop_back();
                } else {
                    stk.push_back(num[pos++]);
                }
            }
        }
        for(auto x : stk) ans += x;
        for(int i = pos; i < n; i++) ans += num[i];
        while(k > 0 && !ans.empty()) ans.pop_back(), k--;
        
        reverse(ans.begin(), ans.end());
        while(!ans.empty() && ans.back() == '0') ans.pop_back();
        reverse(ans.begin(), ans.end());

        if (ans == "") ans = "0";
        return ans;
    }
};