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"
刪除字符串里的重復字符,要讓字母按字典順序排序,前提是不能打亂之前的順序。
代碼:
參考代碼
解題思路:定義兩個hash表,一個用來存儲出現字符的個數,一個用來存儲字符是否出現在結果中。然后遍歷字符串,將對應字符個數減一,判斷該字符串是否出現在結果中,如果出現在結果中,表明該字符串已經被放到了正確的位置上,則循環繼續;如果沒有出現在結果中,比較當前和結果的最后一個字符串,如果當前的字符串小于result的back的話,并且結果字符串的最后一個字符在后邊還會出現,那么我們就把結果的最后一個字符串踢出,到這里我們是要保證小的字符串放到前邊,也要保證大的字符串在后邊還會出現;如果當前的字符串大于結果的字符串,或者結果字符串尾部字符已經是最后一個,那么我們就直接把當前遍歷的字符串加在結果的尾部,并且將inresult設置為true,表示這個字符串已經出現在result里。為了使第一次比較成功,我們需要把result初始化成" ",如果result時空的話就沒法去出它的最后一個數值。