How to remove duplicates from a string in C++

2 Answers

0 votes
#include <iostream>

char* removeDuplicates(char str[]) {
    int index = 0;
 
    for (int i = 0; i < str[i] != '\0'; i++) {
        int j;
        for (j = 0; j < i; j++) {
            if (str[i] == str[j]) { // character already exist
                break;
            }
        }
 
        if (j == i) {
            str[index++] = str[i];
        }
    }
 
    str[index] = '\0';
 
    return str;
}
 
int main() {
    char str[] = "abcdaaaabbbccccddddefghhhhhhxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
 
    removeDuplicates(str);
 
    std::cout << str;
}
 
 
 
 
/*
run:
 
abcdefghx
 
*/

 



answered Feb 9, 2024 by avibootz
edited Feb 9, 2024 by avibootz
0 votes
#include <iostream>
#include <unordered_map>

std::string removeDuplicates(std::string str) {
    std::unordered_map<char, int> exists;
    int size = str.size();
    
    std::string result = "";
    
    for (int i = 0; i < size; i++) {
        if (exists.find(str[i]) == exists.end()) {
            result.push_back(str[i]);
            exists[str[i]]++;
        }
    }
    
    return result;
}

int main() {
    std::string str = "abcdaaaabbbccccddddefghhhhhhxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    
    
    std::cout << removeDuplicates(str);
}
 

 
 
/*
run:
 
abcdefghx
 
*/

 



answered Feb 9, 2024 by avibootz
...