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

Leetcode 316 去除重複字母

技術標籤:C++LeetcodeStack

Leetcode 316 去除重複字母

  1. 儘可能確保字串重的字元單調遞增。
  2. 確保字串沒有重複字元

使用棧結構:
不完全是單調棧。

class Solution {
public:
    string removeDuplicateLetters(string s) {
        vector<int> visited(26), nums(26);
        for(char ss : s){
            nums[ss - 'a']++;
        }

        string res;
        for
(char ss : s){ if(visited[ss - 'a'] == 0){ while(!res.empty() && res.back()>ss){ if(nums[res.back()-'a'] > 0){ visited[res.back() - 'a'] = 0; res.pop_back(); }else{ break
; } } visited[ss-'a'] =1; res.push_back(ss); } nums[ss - 'a'] -= 1; } return res; } };