Given a string, find the all distinct (or non-repeating characters) in it. For example, if the input string is “Geeks for Geeks”, then output should be ‘for’ and if input string is “Geeks Quiz”, then output should be ‘GksQuiz’.
The distinct characters should be printed in same order as they appear in input string.
Examples: 
 
Input : Geeks for Geeks Output : for Input : Hello Geeks Output : HoGks
Method 1 (Simple : O(n2)) 
A Simple Solution is to run two loops. Start traversing from left side. For every character, check if it repeats or not. If the character doesn’t repeat, increment count of non-repeating characters. When the count becomes 1, return each character.
C++
| #include <bits/stdc++.h>usingnamespacestd;intmain(){    string str = "neveropen";    for(inti = 0; i < str.size(); i++)    {        intflag = 0;        for(intj = 0; j < str.size(); j++)        {            // checking if two characters are equal            if(str[i] == str[j] and i != j)             {                flag = 1;                break;            }        }        if(flag == 0)            cout << str[i];    }    return0;}// This code is contributed by umadevi9616 | 
Java
| importjava.util.*;classGFG{publicstaticvoidmain(String[] args){    String str = "neveropen";    for(inti = 0; i < str.length(); i++)    {        intflag = 0;        for(intj = 0; j < str.length(); j++)        {            // checking if two characters are equal            if(str.charAt(i) == str.charAt(j) && i != j)             {                flag = 1;                break;            }        }        if(flag == 0)            System.out.print(str.charAt(i));    }}}// This code is contributed by gauravrajput1 | 
Python3
| string="neveropen"fori inrange(0,len(string)):    flag=0    forj inrange(0,len(string)):        #checking if two characters are equal        if(string[i]==string[j] andi!=j):            flag=1            break    if(flag==0):        print(string[i],end="") | 
C#
| usingSystem;publicclassGFG{publicstaticvoidMain(String[] args){    String str = "neveropen";    for(inti = 0; i < str.Length; i++)    {        intflag = 0;        for(intj = 0; j < str.Length; j++)        {            // checking if two characters are equal            if(str[i] == str[j] && i != j)             {                flag = 1;                break;            }        }        if(flag == 0)            Console.Write(str[i]);    }}}// This code is contributed by gauravrajput1 | 
Javascript
| <script>        varstr = "neveropen";        for(vari = 0; i < str.length; i++) {            varflag = 0;            for(j = 0; j < str.length; j++) {                // checking if two characters are equal                if(str.charAt(i) == str.charAt(j) && i != j) {                    flag = 1;                    break;                }            }            if(flag == 0)                document.write(str.charAt(i));        }// This code is contributed by gauravrajput1 </script> | 
for
Time Complexity: O(n2) 
Auxiliary Space: O(1) 
Method 2 (Efficient but requires two traversals: O(n)) 
 
- Create an array count[] to store counts of characters.
- Traverse the input string str and do following for every character x = str[i]. 
 Increment count[x].
- Traverse the input string again and do following for every character str[i]
- If count[x] is 1, then print the unique character
- If count[x] is greater than 1, then ignore the repeated character.
 
Below is the implementation of above idea. 
 
C++
| // C++ program to print distinct characters of a// string.# include <iostream>usingnamespacestd;# define NO_OF_CHARS 256/* Print duplicates present in the passed string */voidprintDistinct(char*str){    // Create an array of size 256 and count of    // every character in it    intcount[NO_OF_CHARS];    /* Count array with frequency of characters */    inti;    for(i = 0; *(str+i); i++)        if(*(str+i)!=' ')            count[*(str+i)]++;    intn = i;    // Print characters having count more than 0    for(i = 0; i < n; i++)        if(count[*(str+i)] == 1)            cout<< str[i];}/* Driver program*/intmain(){    charstr[] = "neveropen";    printDistinct(str);    return0;} | 
Java
| // Java program to print distinct characters of a// string.publicclassGFG {    staticfinalintNO_OF_CHARS = 256;         /* Print duplicates present in the passed string */    staticvoidprintDistinct(String str)    {        // Create an array of size 256 and count of        // every character in it        int[] count = newint[NO_OF_CHARS];             /* Count array with frequency of characters */        inti;        for(i = 0; i < str.length(); i++)            if(str.charAt(i)!=' ')                count[(int)str.charAt(i)]++;        intn = i;             // Print characters having count more than 0        for(i = 0; i < n; i++)            if(count[(int)str.charAt(i)] == 1)                System.out.print(str.charAt(i));    }         /* Driver program*/    publicstaticvoidmain(String args[])    {        String str = "neveropen";        printDistinct(str);    }}// This code is contributed by Sumit Ghosh | 
Python3
| # Python3 program to print distinct # characters of a string.NO_OF_CHARS =256# Print duplicates present in the # passed string defprintDistinct(str):    # Create an array of size 256 and     # count of every character in it    count =[0] *NO_OF_CHARS    # Count array with frequency of     # characters     fori inrange(len(str)):        if(str[i] !=' '):            count[ord(str[i])] +=1    n =i    # Print characters having count     # more than 0    fori inrange(n):        if(count[ord(str[i])] ==1):            print(str[i], end ="")# Driver Codeif__name__ =="__main__":    str="neveropen"    printDistinct(str)    # This code is contributed by ita_c | 
C#
| // C# program to print distinct characters// of a string.usingSystem;publicclassGFG {        staticintNO_OF_CHARS = 256;        /* Print duplicates present in the    passed string */    staticvoidprintDistinct(String str)    {                // Create an array of size 256 and        // count of every character in it        int[] count = newint[NO_OF_CHARS];            /* Count array with frequency of        characters */        inti;                for(i = 0; i < str.Length; i++)            if(str[i]!=' ')                count[(int)str[i]]++;                        intn = i;            // Print characters having count        // more than 0        for(i = 0; i < n; i++)            if(count[(int)str[i]] == 1)                Console.Write(str[i]);    }        /* Driver program*/    publicstaticvoidMain()    {        String str = "neveropen";                printDistinct(str);    }}// This code is contributed by parashar. | 
Javascript
| <script>// Javascript program to print distinct characters of a// string.    let NO_OF_CHARS = 256;        /* Print duplicates present in the passed string */    functionprintDistinct(str)    {        // Create an array of size 256 and count of        // every character in it        let count = newArray(NO_OF_CHARS);        for(let i=0;i<NO_OF_CHARS;i++)        {            count[i]=0;        }               /* Count array with frequency of characters */        let i;        for(i = 0; i < str.length; i++)            if(str[i]!=' ')                count[str[i].charCodeAt(0)]++;        let n = i;                // Print characters having count more than 0        for(i = 0; i < n; i++)            if(count[str[i].charCodeAt(0)] == 1)                document.write(str[i]);    }        /* Driver program*/    let str = "neveropen";    printDistinct(str);        // This code is contributed by rag2127</script> | 
Output: 
 
for
Time Complexity: O(n) 
Auxiliary Space: O(n) 
Method 3 (O(n) and requires one traversal) 
The idea is to use two auxiliary arrays of size 256 (Assuming that characters are stored using 8 bits). 
 
- Initialize all values in count[] as 0 and all values in index[] as n where n is length of string.
- Traverse the input string str and do following for every character c = str[i]. 
- Increment count[x].
- If count[x] is 1, then store index of x in index[x], i.e., index[x] = i
- If count[x] is 2, then remove x from index[], i.e., index[x] = n
 
- Now index[] has indexes of all distinct characters. Sort indexes and print characters using it. Note that this step takes O(1) time assuming number of characters are fixed (typically 256)
Below is the implementation of above idea. 
 
C++
| // C++ program to find all distinct characters// in a string#include <bits/stdc++.h>usingnamespacestd;constintMAX_CHAR = 256;// Function to print distinct characters in// given string str[]voidprintDistinct(string str){    intn = str.length();    // count[x] is going to store count of    // character 'x' in str. If x is not present,    // then it is going to store 0.    intcount[MAX_CHAR];    // index[x] is going to store index of character    // 'x' in str. If x is not present or x is    // more than once, then it is going to store a value    // (for example, length of string) that cannot be    // a valid index in str[]    intindex[MAX_CHAR];    // Initialize counts of all characters and indexes    // of distinct characters.    for(inti = 0; i < MAX_CHAR; i++)    {        count[i] = 0;        index[i] = n; // A value more than any index                      // in str[]    }    // Traverse the input string    for(inti = 0; i < n; i++)    {        // Find current character and increment its        // count        charx = str[i];        ++count[x];        // If this is first occurrence, then set value        // in index as index of it.        if(count[x] == 1 && x !=' ')            index[x] = i;        // If character repeats, then remove it from        // index[]        if(count[x] == 2)            index[x] = n;    }    // Since size of index is constant, below operations    // take constant time.    sort(index, index+MAX_CHAR);    for(inti=0; i<MAX_CHAR && index[i] != n; i++)       cout << str[index[i]];}// Driver codeintmain(){    string str = "neveropen";    printDistinct(str);    return0;} | 
Java
| // Java program to print distinct characters of // a string.importjava.util.Arrays;publicclassGFG {        staticfinalintMAX_CHAR = 256;         // Function to print distinct characters in    // given string str[]    staticvoidprintDistinct(String str)    {        intn = str.length();             // count[x] is going to store count of        // character 'x' in str. If x is not present,        // then it is going to store 0.        int[] count = newint[MAX_CHAR];             // index[x] is going to store index of character        // 'x' in str. If x is not present or x is        // more than once, then it is going to store a         // value (for example, length of string) that         // cannot be a valid index in str[]        int[] index = newint[MAX_CHAR];             // Initialize counts of all characters and         // indexes of distinct characters.        for(inti = 0; i < MAX_CHAR; i++)        {            count[i] = 0;            index[i] = n; // A value more than any                           // index in str[]        }             // Traverse the input string        for(inti = 0; i < n; i++)        {            // Find current character and increment             // its count            charx = str.charAt(i);            ++count[x];                 // If this is first occurrence, then set             // value in index as index of it.            if(count[x] == 1&& x !=' ')                index[x] = i;                 // If character repeats, then remove it             // from index[]            if(count[x] == 2)                index[x] = n;        }             // Since size of index is constant, below         // operations take constant time.        Arrays.sort(index);                for(inti = 0; i < MAX_CHAR && index[i] != n;                                                  i++)           System.out.print(str.charAt(index[i]));    }         // Driver code    publicstaticvoidmain(String args[])    {        String str = "neveropen";        printDistinct(str);    }}// This code is contributed by Sumit Ghosh | 
Python
| # Python3 program to find all distinct characters# in a StringMAX_CHAR =256# Function to print distinct characters in# given Str[]defprintDistinct(Str):    n =len(Str)    # count[x] is going to store count of    # character 'x' in Str. If x is not present,    # then it is going to store 0.    count =[0fori inrange(MAX_CHAR)]    # index[x] is going to store index of character    # 'x' in Str. If x is not present or x is    # more than once, then it is going to store a value    # (for example, length of String) that cannot be    # a valid index in Str[]    index =[n fori inrange(MAX_CHAR)]    # Traverse the input String    fori inrange(n):                # Find current character and increment its        # count        x =ord(Str[i])        count[x] +=1        # If this is first occurrence, then set value        # in index as index of it.        if(count[x] ==1andx !=' '):            index[x] =i        # If character repeats, then remove it from        # index[]        if(count[x] ==2):            index[x] =n    # Since size of index is constant, below operations    # take constant time.    index=sorted(index)    fori inrange(MAX_CHAR):        ifindex[i] ==n:            break        print(Str[index[i]],end="")# Driver codeStr="neveropen"printDistinct(Str)# This code is contributed by mohit kumar 29 | 
C#
| // C# program to print distinct characters of // a string.usingSystem;publicclassGFG {        staticintMAX_CHAR = 256;        // Function to print distinct characters in    // given string str[]    staticvoidprintDistinct(stringstr)    {        intn = str.Length;            // count[x] is going to store count of        // character 'x' in str. If x is not         // present, then it is going to store 0.        int[]count = newint[MAX_CHAR];            // index[x] is going to store index of         // character 'x' in str. If x is not         // present or x is more than once, then        // it is going to store a value (for         // example, length of string) that         // cannot be a valid index in str[]        int[]index = newint[MAX_CHAR];            // Initialize counts of all characters         // and indexes of distinct characters.        for(inti = 0; i < MAX_CHAR; i++)        {            count[i] = 0;                        // A value more than any index            // in str[]            index[i] = n;                                }            // Traverse the input string        for(inti = 0; i < n; i++)        {            // Find current character and             // increment its count            charx = str[i];            ++count[x];                // If this is first occurrence, then            // set value in index as index of it.            if(count[x] == 1 && x !=' ')                index[x] = i;                // If character repeats, then remove            // it from index[]            if(count[x] == 2)                index[x] = n;        }            // Since size of index is constant, below         // operations take constant time.        Array.Sort(index);                for(inti = 0; i < MAX_CHAR &&                               index[i] != n; i++)        Console.Write(str[index[i]]);    }        // Driver code    publicstaticvoidMain()    {        stringstr = "neveropen";        printDistinct(str);    }}// This code is contributed by nitin mittal. | 
Javascript
| <script>// Javascript program to print distinct characters of// a string.        let MAX_CHAR = 256;        // Function to print distinct characters in    // given string str[]    functionprintDistinct(str)    {        let n = str.length;              // count[x] is going to store count of        // character 'x' in str. If x is not present,        // then it is going to store 0.        let count = newArray(MAX_CHAR);              // index[x] is going to store index of character        // 'x' in str. If x is not present or x is        // more than once, then it is going to store a        // value (for example, length of string) that        // cannot be a valid index in str[]        let index = newArray(MAX_CHAR);              // Initialize counts of all characters and        // indexes of distinct characters.        for(let i = 0; i < MAX_CHAR; i++)        {            count[i] = 0;            index[i] = n; // A value more than any                          // index in str[]        }                      // Traverse the input string        for(let i = 0; i < n; i++)        {            // Find current character and increment            // its count            let x = str[i].charCodeAt(0);            ++count[x];                  // If this is first occurrence, then set            // value in index as index of it.            if(count[x] == 1 && x !=' ')                index[x] = i;                  // If character repeats, then remove it            // from index[]            if(count[x] == 2)                index[x] = n;        }              // Since size of index is constant, below        // operations take constant time.        index.sort(function(a,b){returna-b});                 for(let i = 0; i < MAX_CHAR && index[i] != n;                                                  i++)           document.write(str[index[i]]);    }        // Driver code    let str = "neveropen";    printDistinct(str);            // This code is contributed by avanitrachhadiya2155</script> | 
for
Time Complexity: O(n) 
Auxiliary Space: O(n) 
This article is contributed by Aarti_Rathi and Afzal Ansari. If you like neveropen and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the neveropen main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
 
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!


 
                                    







