# Common characters in n strings

• Difficulty Level : Medium
• Last Updated : 08 Feb, 2019

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.

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

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.

Psuedocode :

```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++

 `// CPP Program to find all the common characters``// in n strings``#include ``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 Code``int` `main()``{``    ``string str[] = { ``"geeksforgeeks"``,``                    ``"gemkstones"``,``                    ``"acknowledges"``,``                    ``"aguelikes"` `};``    ``int` `n = ``sizeof``(str)/``sizeof``(str);``    ``commonCharacters(str, n);``    ``return` `0;``}`

## Java

 `// Java Program to find all the common characters``// in n strings``import` `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

 `# Python3 Program to find all the ``# common characters in n strings``MAX_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 Code ``strings ``=` `[ ``"geeksforgeeks"``, ``"gemkstones"``, ``            ``"acknowledges"``, ``"aguelikes"` `]``n ``=` `len``(strings)``commonCharacters(strings, n) `` ` `# This code is contributed by Niwesh Gupta`

## C#

 `// C# Program to find all the ``// common characters in n strings``using` `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`

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 contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.