Common characters in n strings - GeeksforGeeks

02 Mar, 2022
Given n strings, find the common characters in all the strings. In simple words, find characters that appear in all the strings and display them in alphabetical order or lexicographical order.Note* we’ll be considering that the strings contain lower case letters only.Examples:  
Input :  geeksforgeeks
         gemkstones
         acknowledges
         aguelikes

Output : e g k s

Input :  apple 
         orange

Output : a e
We’ll use two hash arrays of size 26 (for a-z, where 0 is a, and z is 25). The approach will be simple, if we have seen a character before we’ll mark it and if we haven’t then ignore the character because it is not a common one.Pseudocode :  
commonCharacters :
for i= 0 to n-1:

   // here m is length of ith string 
   for j = 0 to m-1:  
      if ( character seen before ) :
         mark the character
      else : 
         ignore it

display all the marked characters 
 
 
C++
Java
Python3
C#
Javascript
// CPP Program to find all the common characters// in n strings#include <bits/stdc++.h>using namespace std; const int MAX_CHAR = 26; void commonCharacters(string str[], int n){    // primary array for common characters    // we assume all characters are seen before.    bool prim[MAX_CHAR];    memset(prim, true, sizeof(prim));     // for each string    for (int i = 0; i < n; i++) {         // secondary array for common characters        // Initially marked false        bool sec[MAX_CHAR] = { false };         // for every character of ith string        for (int j = 0; str[i][j]; j++) {             // if character is present in all            // strings before, mark it.            if (prim[str[i][j] - 'a'])                sec[str[i][j] - 'a'] = true;        }         // copy whole secondary array into primary        memcpy(prim, sec, MAX_CHAR);    }     // displaying common characters    for (int i = 0; i < 26; i++)        if (prim[i])            printf("%c ", i + 'a');} // Driver's Codeint main(){    string str[] = { "geeksforgeeks",                    "gemkstones",                    "acknowledges",                    "aguelikes" };    int n = sizeof(str)/sizeof(str[0]);    commonCharacters(str, n);    return 0;}
// Java Program to find all the common characters// in n stringsimport java.util.*;import java.lang.*; class GFG {     static int MAX_CHAR = 26;     public static void commonCharacters(String str[],                                               int n)    {                 // primary array for common characters        // we assume all characters are seen before.        Boolean[] prim = new Boolean[MAX_CHAR];        Arrays.fill(prim, new Boolean(true));         // for each string        for (int i = 0; i < n; i++) {             // secondary array for common characters            // Initially marked false            Boolean[] sec = new Boolean[MAX_CHAR];            Arrays.fill(sec, new Boolean(false));             // for every character of ith string            for (int j = 0; j < str[i].length(); j++)            {                 // if character is present in all                // strings before, mark it.                if (prim[str[i].charAt(j) - 'a'])                sec[str[i].charAt(j) - 'a'] = true;            }             // copy whole secondary array into primary            System.arraycopy(sec, 0, prim, 0, MAX_CHAR);        }         // displaying common characters        for (int i = 0; i < 26; i++)            if (prim[i]){                System.out.print(Character.toChars(i                                               + 97));                System.out.print(" ");            }    }     // Driver code    public static void main(String[] args)    {        String str[] = { "geeksforgeeks",                         "gemkstones",                         "acknowledges",                         "aguelikes" };                                  int n = str.length;        commonCharacters(str, n);    }} // This code is contributed by Prasad Kshirsagar
# Python3 Program to find all the# common characters in n stringsMAX_CHAR = 26 def commonCharacters(strings, n) :         # primary array for common characters    # we assume all characters are seen before.    prim = [True] * MAX_CHAR         # for each strings    for i in range(n):                 # secondary array for common characters        # Initially marked false        sec = [False] * MAX_CHAR         # for every character of ith strings        for j in range(len(strings[i])):             # if character is present in all            # strings before, mark it.            if (prim[ord(strings[i][j]) - ord('a')]) :                sec[ord(strings[i][j]) -                    ord('a')] = True         # copy whole secondary array        # into primary        for i in range(MAX_CHAR):            prim[i] = sec[i]     # displaying common characters    for i in range(26):        if (prim[i]) :            print("%c " % (i + ord('a')),                               end = "") # Driver's Codestrings = [ "geeksforgeeks", "gemkstones",            "acknowledges", "aguelikes" ]n = len(strings)commonCharacters(strings, n) # This code is contributed by Niwesh Gupta
// C# Program to find all the// common characters in n stringsusing System; class GFG{     static int MAX_CHAR = 26;     public static void commonCharacters(String []str,                                            int n)    {                 // primary array for common characters        // we assume all characters are seen before.        Boolean[] prim = new Boolean[MAX_CHAR];                 for(int i = 0; i < prim.Length; i++)            prim[i] = true;         // for each string        for (int i = 0; i < n; i++)        {             // secondary array for common characters            // Initially marked false            Boolean[] sec = new Boolean[MAX_CHAR];                         for(int s = 0; s < sec.Length; s++)                sec[s]=false;             // for every character of ith string            for (int j = 0; j < str[i].Length; j++)            {                 // if character is present in all                // strings before, mark it.                if (prim[str[i][j] - 'a'])                sec[str[i][j] - 'a'] = true;            }             // Copy whole secondary array into primary            Array.Copy(sec, 0, prim, 0, MAX_CHAR);        }         // Displaying common characters        for (int i = 0; i < 26; i++)            if (prim[i])            {                Console.Write((char)(i + 97));                Console.Write(" ");            }    }     // Driver code    public static void Main(String[] args)    {        String []str = { "geeksforgeeks",                        "gemkstones",                        "acknowledges",                        "aguelikes" };                                 int n = str.Length;        commonCharacters(str, n);    }} // This code is contributed by Rajput-JI
<script> // JavaScript Program to find all the// common characters in n stringsconst MAX_CHAR = 26 function commonCharacters(strings, n) {         // primary array for common characters    // we assume all characters are seen before.    let prim = new Array(MAX_CHAR).fill(true)         // for each strings    for(let i = 0; i < n; i++){                 // secondary array for common characters        // Initially marked false        let sec = new Array(MAX_CHAR).fill(false)         // for every character of ith strings        for(let j = 0; j < strings[i].length; j++){             // if character is present in all            // strings before, mark it.            if (prim[strings[i].charCodeAt(j) - ('a').charCodeAt(0)])                sec[strings[i].charCodeAt(j) - ('a').charCodeAt(0)] = true        }         // copy whole secondary array        // into primary        for(let i = 0; i < MAX_CHAR; i++){            prim[i] = sec[i]        }    }     // displaying common characters    for(let i = 0; i < 26; i++){        if (prim[i])            document.write(String.fromCharCode(i +('a').charCodeAt(0))," ")    }} // Driver's Codelet strings = [ "geeksforgeeks", "gemkstones",            "acknowledges", "aguelikes" ]let n = strings.lengthcommonCharacters(strings, n) // This code is contributed by shinjanpatra </script>
Output:  
e g k s
This article is contributed by Shubham Rana. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks 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. 
Prasad_Kshirsagar
Rajput-Ji
NiweshGupta
rkbhola5
shinjanpatra
Strings
Strings
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Check for Balanced Brackets in an expression (well-formedness) using Stack
Python program to check if a string is palindrome or not
KMP Algorithm for Pattern Searching
Different methods to reverse a string in C/C++
Convert string to char array in C++
Longest Palindromic Substring | Set 1
Array of Strings in C++ (5 Different Ways to Create)
Caesar Cipher in Cryptography
Check whether two strings are anagram of each other
Reverse words in a given string