316. Remove Duplicate Letters

Given 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.

Given "bcabc"

Return "abc"

Given "cbacdcbc"

Return "acdb"

刪除字符串里的重復(fù)字符,要讓字母按字典順序排序,前提是不能打亂之前的順序。


代碼:


參考代碼


解題思路:定義兩個hash表,一個用來存儲出現(xiàn)字符的個數(shù),一個用來存儲字符是否出現(xiàn)在結(jié)果中。然后遍歷字符串,將對應(yīng)字符個數(shù)減一,判斷該字符串是否出現(xiàn)在結(jié)果中,如果出現(xiàn)在結(jié)果中,表明該字符串已經(jīng)被放到了正確的位置上,則循環(huán)繼續(xù);如果沒有出現(xiàn)在結(jié)果中,比較當前和結(jié)果的最后一個字符串,如果當前的字符串小于result的back的話,并且結(jié)果字符串的最后一個字符在后邊還會出現(xiàn),那么我們就把結(jié)果的最后一個字符串踢出,到這里我們是要保證小的字符串放到前邊,也要保證大的字符串在后邊還會出現(xiàn);如果當前的字符串大于結(jié)果的字符串,或者結(jié)果字符串尾部字符已經(jīng)是最后一個,那么我們就直接把當前遍歷的字符串加在結(jié)果的尾部,并且將inresult設(shè)置為true,表示這個字符串已經(jīng)出現(xiàn)在result里。為了使第一次比較成功,我們需要把result初始化成" ",如果result時空的話就沒法去出它的最后一個數(shù)值。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Given a string which contains only lowercase letters, rem...
    Jeanz閱讀 353評論 0 0
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,890評論 0 33
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評論 19 139
  • 似乎做朋友有點欠缺 又見面 一見如故 記憶猶存 只是冒然問一句 過得好嗎? 跟我相處一見面是這樣 那我們就生疏了 ...
    妙妙尼閱讀 394評論 0 0
  • 冬天早起是很難的,趕著上班不遲到吧! 坐在車上,刷圈!看到好多家長轉(zhuǎn)發(fā)《羅一笑,你給我站?。 反蠹叶己粲鯉蛶瓦@個孩...
    小蟲子看世界閱讀 243評論 4 5

友情鏈接更多精彩內(nèi)容