LeetCode 0316 - Remove Duplicate Letters 2019-05-16 LeetCode Contents Remove Duplicate LettersDesicriptionSolution Remove Duplicate Letters DesicriptionGiven a string which contains only lowercase letters, remove duplicate letters so that every letter appear once and only once. You must make sure your result is the smallest in lexicographical order among all possible results. Example 1: 12Input: "bcabc"Output: "abc" Example 2: 12Input: "cbacdcbc"Output: "acdb" Solution123456789101112131415161718192021222324252627282930class Solution {public: std::string removeDuplicateLetters(std::string s) { auto visit = std::map<char, bool>(); auto count = std::map<char, int>(); for(auto c : s) { count[c]++; } auto res = std::string(); for(auto c : s) { count[c]--; if(visit[c]) { continue; } while(!res.empty() && c < res.back() && count[res.back()] != 0) { visit[res.back()] = false; res.pop_back(); } res += c; visit[c] = true; } return res; }};