1. 程式人生 > >316.去除重複字母

316.去除重複字母

給定一個僅包含小寫字母的字串,去除字串中重複的字母,使得每個字母只出現一次。需保證返回結果的字典序最小(要求不能打亂其他字元的相對位置)。

示例 1:

輸入: "bcabc"

輸出: "abc"

示例 2:

輸入: "cbacdcbc"

輸出: "acdb"

class Solution { public:     string removeDuplicateLetters(string s) {         int m[256] = {0}, visited[256] = {0};         string res = "0";         for (auto a : s) ++m[a];         for (auto a : s) {             --m[a];             if (visited[a]) continue;             while (a < res.back() && m[res.back()]) {                 visited[res.back()] = 0;                 res.pop_back();             }             res += a;             visited[a] = 1;         }         return res.substr(1);     } };