贪心/栈 - 去除重复字母
生活随笔
收集整理的這篇文章主要介紹了
贪心/栈 - 去除重复字母
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接
對于一個字符串,刪除滿足s[i]>s[i+1]s[i] > s[i+1]s[i]>s[i+1]且iii最小的那個字符,使得刪除后的字典序最小,基于這個思路,可以在遍歷的時候判斷如果前面的字符字典序大就刪除它。另外還要滿足每個元素只出現一次。
class Solution { public:string removeDuplicateLetters(string s) {vector<int> cnt(26), vis(26);for (char ch : s) {cnt[ch - 'a']++;}string ret;for (char ch : s) {if (!vis[ch - 'a']) {while (!ret.empty() && ch < ret.back() && cnt[ret.back() - 'a']) {vis[ret.back() - 'a'] = 0;ret.pop_back();}vis[ch - 'a'] = 1;ret.push_back(ch);}cnt[ch - 'a']--;}return ret;} }; 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的贪心/栈 - 去除重复字母的全部內容,希望文章能夠幫你解決所遇到的問題。