2014-01-14 33 views
4

去除串重複的字符有沒有辦法從字符串中刪除重複的字符,比如他們可以從載體中刪除如下使用STL

sort(vec.begin(), vec.end()); 
vec.erase(unique(vec.begin(), vec.end()), vec.end()); 

或者我只需要編寫了它一個基本的解決方案? 我所想:

我所有的角色加入到一組

+2

字符串與矢量完全一樣。 –

+0

這取決於「重複」字符的含義。字符串「ABACADAF」是否有重複的「A」?或者你是否想要''AABACAD''去除雙'AA'中的第一個'A'? –

+0

爲什麼你要去'O(n log(n))'解決方案,而你可以在'O(n)'中做,如[這裏](http://www.geeksforgeeks.org/remove-all-在第二個方法中重複輸入字符串/)? – adrin

回答

11

的C++算法和容器的設計,整個的一點是,算法 - 儘可能地 - 容器無關。

因此,對矢量起作用的相同算法 - 當然! - 在字符串上。

std::sort(str.begin(), str.end()); 
str.erase(std::unique(str.begin(), str.end()), str.end()); 

同樣甚至適用於老式的C字符串 - 與你不能erase它們的尾巴,你需要重新設置空終止字符手動截斷他們的微小差異(也有不beginend成員函數,所以你可以使用指向第一個和最後一個字符的指針)。