程式語言 - LeetCode - C++ - 316. Remove Duplicate Letters



參考資訊:
https://www.cnblogs.com/grandyang/p/5085379.html

題目:


解答:

class Solution {
public:
    string removeDuplicateLetters(string s) {
        string ans = "0";
        vector<int> cnt(255, 0);
        vector<bool> visited(255, false);

        for (char c : s) {
            cnt[c] += 1;
        }

        for (char c : s) {
            cnt[c] -= 1;

            if (visited[c] == true) {
                continue;
            }

            while (c < ans.back() && cnt[ans.back()]) {
                visited[ans.back()] = false;
                ans.pop_back();
            }

            ans += c;
            visited[c] = true;
        }

        return ans.substr(1);
    }
};