在C++中刪除重復字符的一種方法是使用哈希表。可以使用一個數組或者一個標準庫中的unordered_set來實現哈希表。具體步驟如下:
以下是一個使用unordered_set的示例代碼:
#include <iostream>
#include <unordered_set>
#include <string>
std::string removeDuplicates(const std::string& str) {
std::string result;
std::unordered_set<char> uniqueChars;
for (char c : str) {
if (uniqueChars.find(c) == uniqueChars.end()) {
uniqueChars.insert(c);
result += c;
}
}
return result;
}
int main() {
std::string input = "abracadabra";
std::string result = removeDuplicates(input);
std::cout << result << std::endl; // 輸出 "abrcd"
return 0;
}
注意:這種方法會保留第一次出現的字符,刪除其余重復的字符。如果要保留最后一次出現的字符,可以將哈希表的類型改為std::unordered_map<char, int>
,將字符映射到它們在字符串中的索引位置。在遍歷字符串時,更新哈希表中字符的索引值。在最后,遍歷哈希表,將索引值最大的字符添加到結果字符串中。