# Remove duplicate characters from a string in c++

In this tutorial, we will learn how to remove duplicate characters from a given string using the C++ program. We will learn it in two approaches. The first one is simple and uses brute force approach (just by using a temporary array). And the other one is by using a set from STL. The latter has less time complexity than the former.

### Algorithm used:

Suppose the given string is: aaabbbbcccccaaaaa

1. We will begin by traversing the whole original array(a[]) and copy the first character of the original array into our new array(b[]).
2. Then, compare the next character of b[] and a[].
3. If they are not equal, then copy the character into our new array i.e b[]. Increase j by 1 and count also by 1.
4. Count is maintained to determine the size of b[].
5. If they are equal, then do nothing. (because it’s the case of repetition)

Here is the C++ code for removing duplicate characters in a string:

```#include<bits/stdc++.h>

using namespace std;

int removeduplicate(char a[], char b[], int lengthofstring) {
int j = 1;
int count = 0;
char temp;
b = a;

for (int i = 0; i < lengthofstring; i++) {
if (b[j - 1] != a[i]) {
b[j] = a[i];
j++;
count++;
}

}
return count + 1;
}

int main() {
char a;

cin.getline(a, 90);
int len = strlen(a);
char b;

int countofstring = removeduplicate(a, b, len);

for (int i = 0; i < countofstring; i++) {
cout << b[i];
}
}
```

The input is:

`aaabbbbcccccaaaaa`

The output is:

`abca`

Time complexity:o(n)

Auxiliary space:o(n)

### Alternative method:

Duplicate characters can also be removed by using a set. Set is a container that only stores unique elements. For example, if a set is already <1,4,5,6> and we insert 4 in it. There will be no change and set will be now <1,4,5,6>. If we insert 3 in it, the set will be <1,3,4,5,6>.

We are going to use this alternative way in C++ to remove duplicate characters from a string with the code example.

This is how a set works. Also, internally the elements of a set are in sorted order. Sets are typically implemented as binary search trees.

Here is the code for it:

```#include<bits/stdc++.h>

using namespace std;
void remove(char str[],int n)
{
set<char> s(str,str+n-1);//create a set excluding '/0'
//print the contents of set
for(set<char>::iterator it=s.begin();it!=s.end();it++)
{
cout<<*it;
}
}
int main()
{
char str={"aaabbbbcccccdddd"};
int n=strlen(str);
remove(str,n);

}```

The output is:

```abcd
```

Time complexity: o(nlogn)

Auxiliary space: o(n)

Also, refer to: