Related Articles
Find one extra character in a string
• Difficulty Level : Easy
• Last Updated : 08 Nov, 2020

Given two strings which are of lengths n and n+1. The second string contains all the character of the first string, but there is one extra character. Your task to find the extra character in the second string.

Examples :

```Input : string strA = "abcd";
string strB = "cbdae";
Output : e
string B contain all the element
there is a one extra character which is e

Input : string strA = "kxml";
string strB = "klxml";
Output : l
string B contain all the element
there is a one extra character which is l
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Method 1(Brute Force):-
Check with two for loop.
Time Complexity:- O(n^2)
Space Complexity:- O(1).

Method 2(Hash Map):-
Create an empty hash table and insert all character of second string. Now remove all characters of first string. Remaining character is the extra character.

Time Complexity:- O(n)
Auxiliary Space:- O(n).

## C++

 `// CPP program to find extra character in one  ` `// string ` `#include ` `using` `namespace` `std; ` ` `  `char` `findExtraCharcter(string strA, string strB) ` `{ ` `    ``// store string values in map ` `    ``unordered_map<``char``, ``int``> m1; ` ` `  `    ``// store second string in map with frequency ` `    ``for` `(``int` `i = 0; i < strB.length(); i++) ` `        ``m1[strB[i]]++; ` ` `  `    ``// store first string in map with frequency ` `    ``for` `(``int` `i = 0; i < strA.length(); i++) ` `        ``m1[strA[i]]--; ` ` `  `    ``for` `(``auto` `h1 = m1.begin(); h1 != m1.end(); h1++) { ` ` `  `        ``// if the frequency is 1 then this ` `        ``// character is which is added extra ` `        ``if` `(h1->second == 1) ` `            ``return` `h1->first; ` `    ``} ` `} ` ` `  `int` `main() ` `{ ` `    ``// given string ` `    ``string strA = ``"abcd"``; ` `    ``string strB = ``"cbdad"``; ` ` `  `    ``// find Extra Character ` `    ``cout << findExtraCharcter(strA, strB); ` `} `

## Java

 `// Java program to find extra character in one  ` `// string ` `class` `GFG  ` `{ ` ` `  `static` `char` `findExtraCharcter(``char` `[]strA, ``char``[] strB) ` `{ ` `    ``// store string values in map ` `    ``int``[] m1 = ``new` `int``[``256``]; ` ` `  `    ``// store second string in map with frequency ` `    ``for` `(``int` `i = ``0``; i < strB.length; i++) ` `        ``m1[strB[i]]++; ` ` `  `    ``// store first string in map with frequency ` `    ``for` `(``int` `i = ``0``; i < strA.length; i++) ` `        ``m1[strA[i]]--; ` ` `  `    ``for` `(``int` `i=``0``;i

## Python3

 `# Python3 program to find extra character  ` `# in one string ` `def` `findExtraCharacter(strA, strB): ` ` `  `    ``# store string values in map ` `    ``m1 ``=` `{} ` ` `  `    ``# store second string in map  ` `    ``# with frequency ` `    ``for` `i ``in` `strB: ` `        ``if` `i ``in` `m1: ` `            ``m1[i] ``+``=` `1` `        ``else``: ` `            ``m1[i] ``=` `1` ` `  `    ``# store first string in map  ` `    ``# with frequency ` `    ``for` `i ``in` `strA: ` `        ``m1[i] ``-``=` `1` ` `  `    ``for` `h1 ``in` `m1: ` ` `  `        ``# if the frequency is 1 then this ` `        ``# character is which is added extra ` `        ``if` `m1[h1] ``=``=` `1``: ` `            ``return` `h1 ` ` `  `# Driver Code ` `if` `__name__ ``=``=` `"__main__"``: ` ` `  `    ``# given string ` `    ``strA ``=` `'abcd'` `    ``strB ``=` `'cbdad'` ` `  `    ``# find Extra Character ` `    ``print``(findExtraCharacter(strA, strB)) ` ` `  `# This code is contributed by ` `# sanjeev2552 `

## C#

 `// C# program to find extra character in one  ` `// string ` `using` `System; ` `     `  `class` `GFG  ` `{ ` ` `  `static` `char` `findExtraCharcter(``char` `[]strA, ``char``[] strB) ` `{ ` `    ``// store string values in map ` `    ``int``[] m1 = ``new` `int``; ` ` `  `    ``// store second string in map with frequency ` `    ``for` `(``int` `i = 0; i < strB.Length; i++) ` `        ``m1[strB[i]]++; ` ` `  `    ``// store first string in map with frequency ` `    ``for` `(``int` `i = 0; i < strA.Length; i++) ` `        ``m1[strA[i]]--; ` ` `  `    ``for` `(``int` `i = 0; i < m1.Length; i++) ` `    ``{ ` ` `  `        ``// if the frequency is 1 then this ` `        ``// character is which is added extra ` `        ``if` `(m1[i]== 1) ` `            ``return` `(``char``) i; ` `    ``} ` `    ``return` `char``.MinValue; ` `} ` ` `  `// Driver code ` `public` `static` `void` `Main(String[] args)  ` `{ ` `    ``// given string ` `    ``String strA = ``"abcd"``; ` `    ``String strB = ``"cbdad"``; ` ` `  `    ``// find Extra Character ` `    ``Console.WriteLine(findExtraCharcter(strA.ToCharArray(),  ` `                                        ``strB.ToCharArray())); ` `    ``} ` `} ` ` `  `// This code is contributed by Rajput-Ji `

Output:

```d
```

Method 3(Bits):-
traverse first and second string from starting with xor operation at the end you get the character which is extra.
Time Complexity:- O(n+n+1)
Space Complexity:- O(1).

## C++

 `// CPP program to find extra character in one  ` `// string ` `#include ` `using` `namespace` `std; ` ` `  `char` `findExtraCharcter(string strA, string strB) ` `{ ` `    ``// result store the result ` `    ``int` `res = 0, i; ` ` `  `    ``// traverse string A till end and  ` `    ``// xor with res ` `    ``for` `(i = 0; i < strA.length(); i++) { ` ` `  `        ``// xor with res ` `        ``res ^= strA[i]; ` `    ``} ` ` `  `    ``// traverse string B till end and  ` `    ``// xor with res ` `    ``for` `(i = 0; i < strB.length(); i++) { ` ` `  `        ``// xor with res ` `        ``res ^= strB[i]; ` `    ``} ` ` `  `    ``// print result at the end ` `    ``return` `((``char``)(res)); ` `} ` ` `  `int` `main() ` `{ ` `    ``// given string ` `    ``string strA = ``"abcd"``; ` `    ``string strB = ``"cbdad"``; ` `    ``cout << findExtraCharcter(strA, strB); ` `    ``return` `0; ` `} `

## Java

 `// Java program to find extra ` `// character in one string ` `import` `java.io.*; ` ` `  `class` `GFG { ` `     `  `    ``static` `char` `findExtraCharcter(String strA, ` `                                  ``String strB) ` `    ``{ ` `        ``// result store the result ` `        ``int` `res = ``0``, i; ` `     `  `        ``// traverse string A till  ` `        ``// end and xor with res ` `        ``for` `(i = ``0``; i < strA.length(); i++) ` `        ``{ ` `            ``// xor with res ` `            ``res ^= strA.charAt(i); ` `        ``} ` `     `  `        ``// traverse string B till end and  ` `        ``// xor with res ` `        ``for` `(i = ``0``; i < strB.length(); i++) ` `        ``{ ` `            ``// xor with res ` `            ``res ^= strB.charAt(i); ` `        ``} ` `     `  `        ``// print result at the end ` `        ``return` `((``char``)(res)); ` `    ``} ` `     `  `    ``// Driver code ` `    ``public` `static` `void` `main(String args[]) ` `    ``{ ` `        ``// given string ` `        ``String strA = ``"abcd"``; ` `        ``String strB = ``"cbdad"``; ` `        ``System.out.println(findExtraCharcter(strA, strB)); ` `    ``} ` `} ` ` `  `/*This code is contributed by Nikita Tiwari.*/`

## Python 3

 `# Python 3 program to find  ` `# extra character in one string ` ` `  `def` `findExtraCharcter(strA, strB) : ` `     `  `    ``# result store the result ` `    ``res ``=` `0` ` `  `    ``# traverse string A till  ` `    ``# end and xor with res ` `    ``for` `i ``in` `range``(``0``,``len``(strA)) : ` `         `  `        ``# xor with res ` `        ``res ``=``res ^ (``ord``)(strA[i]) ` `         `  `    ``# traverse string B till  ` `    ``# end and xor with res ` `    ``for` `i ``in` `range``(``0``,``len``(strB)) : ` `         `  `        ``# xor with res ` `        ``res ``=` `res ^ (``ord``)(strB[i]) ` `         `  `    ``# print result at the end ` `    ``return` `((``chr``)(res)); ` ` `  `# given string ` `strA ``=` `"abcd"` `strB ``=` `"cbdad"` `print``(findExtraCharcter(strA, strB)) ` ` `  `# This code is contributed by Nikita Tiwari. `

## C#

 `// C# program to find extra character ` `// in one string ` `using` `System; ` ` `  `class` `GFG { ` ` `  `    ``static` `char` `findExtraCharcter(``string` `strA,  ` `                                  ``string` `strB) ` `    ``{ ` `        ``// result store the result ` `        ``int` `res = 0, i; ` `     `  `        ``// traverse string A till end and  ` `        ``// xor with res ` `        ``for` `(i = 0; i < strA.Length; i++) { ` `     `  `            ``// xor with res ` `            ``res ^= strA[i]; ` `        ``} ` `     `  `        ``// traverse string B till end and  ` `        ``// xor with res ` `        ``for` `(i = 0; i < strB.Length; i++) { ` `     `  `            ``// xor with res ` `            ``res ^= strB[i]; ` `        ``} ` `     `  `        ``// print result at the end ` `        ``return` `((``char``)(res)); ` `    ``} ` `     `  `    ``// Driver Code ` `    ``public` `static` `void` `Main() ` `    ``{ ` `        ``// given string ` `        ``string` `strA = ``"abcd"``; ` `        ``string` `strB = ``"cbdad"``; ` `        ``Console.WriteLine( ` `            ``findExtraCharcter(strA, strB)); ` `    ``} ` `} ` ` `  `// This code is contributed by Manish Shaw  ` `// (manishshaw1) `

## PHP

 ` `

Output:

```d
```

Method 4(Character Code):-
Add the character codes of both the strings. Minus character codes of smaller string from larger string and convert the result integer into character.

Time Complexity:- O(n)
Auxiliary Space:- O(1).

## C++

 `    ``// C++ program to find extra ` `// character in one string ` `#include ` `using` `namespace` `std; ` ` `  `char` `findExtraCharacter(string s1, string s2) ` `{      ` `    ``string smallStr; ` `    ``string largeStr; ` ` `  `    ``// Determine string with extra character. ` `    ``if``(s1.size() > s2.size())  ` `    ``{ ` `        ``smallStr = s2; ` `        ``largeStr = s1; ` `    ``}  ` `    ``else` `    ``{ ` `        ``smallStr = s1; ` `        ``largeStr = s2; ` `    ``} ` ` `  `    ``int` `smallStrCodeTotal = 0; ` `    ``int` `largeStrCodeTotal = 0; ` `    ``int` `i = 0; ` ` `  `    ``// Add character codes of both the strings ` `    ``for``(; i < smallStr.size(); i++)  ` `    ``{ ` `        ``smallStrCodeTotal += smallStr[i]; ` `        ``largeStrCodeTotal += largeStr[i]; ` `    ``} ` ` `  `    ``// Add last character code of large string. ` `    ``largeStrCodeTotal += largeStr[i]; ` ` `  `    ``// Minus the character code of smaller string from  ` `    ``// the character code of large string.  ` `    ``// The result will be the extra character code. ` `    ``int` `intChar = largeStrCodeTotal - smallStrCodeTotal;      ` `    ``return` `(``char``)intChar; ` `} ` ` `  `// Driver code  ` `int` `main() ` `{ ` `    ``string s1 = ``"abcd"``; ` `    ``string s2 = ``"cbdae"``; ` `     `  `    ``char` `extraChar = findExtraCharacter(s1, s2); ` `    ``cout<<``"Extra character: "` `<<(extraChar)<

## Java

 `// Java program to find extra ` `// character in one string ` ` `  `public` `class` `Test { ` ` `  `    ``private` `static` `char` `findExtraCharacter(String s1, String s2) {         ` `        ``String smallStr; ` `        ``String largeStr; ` ` `  `        ``// Determine String with extra character. ` `        ``if``(s1.length() > s2.length()) { ` `            ``smallStr = s2; ` `            ``largeStr = s1; ` `        ``} ``else` `{ ` `            ``smallStr = s1; ` `            ``largeStr = s2; ` `        ``} ` ` `  `        ``int` `smallStrCodeTotal = ``0``; ` `        ``int` `largeStrCodeTotal = ``0``; ` `        ``int` `i = ``0``; ` ` `  `        ``// Add character codes of both the strings ` `        ``for``(; i < smallStr.length(); i++) { ` `            ``smallStrCodeTotal += smallStr.charAt(i); ` `            ``largeStrCodeTotal += largeStr.charAt(i); ` `        ``} ` ` `  `        ``// Add last character code of large String. ` `        ``largeStrCodeTotal += largeStr.charAt(i); ` ` `  `        ``// Minus the character code of smaller string from  ` `        ``// the character code of large string.  ` `        ``// The result will be the extra character code. ` `        ``int` `intChar = largeStrCodeTotal - smallStrCodeTotal;         ` `        ``return` `(``char``)intChar; ` `    ``} ` `     `  `    ``public` `static` `void` `main(String[] args) { ` `        ``String s1 = ``"abcd"``; ` `        ``String s2 = ``"cbdae"``; ` `         `  `        ``char` `extraChar = findExtraCharacter(s1, s2); ` `        ``System.out.println(``"Extra character: "` `+ extraChar); ` `         `  `    ``} ` `} ` ` `  ` `  `/*This code is contributed by Amol Bhosale.*/`

## Python3

 `# Python Program to find extra character in one string  ` `def` `findExtraCharacter(s1,s2): ` `    ``smallStr ``=` `"" ` `    ``largeStr ``=` `"" ` `     `  `    ``# Determine string with extra character ` `    ``if``(``len``(s1) > ``len``(s2)): ` `        ``smallStr ``=` `s2 ` `        ``largeStr ``=` `s1 ` `    ``else``: ` `        ``smallStr ``=` `s1 ` `        ``largeStr ``=` `s2 ` `    ``smallStrCodeTotal ``=` `0` `    ``largeStrCodeTotal ``=` `0` `    ``i ``=` `0` `     `  `    ``# Add Character codes of both the strings ` `    ``while``(i < ``len``(smallStr)): ` `        ``smallStrCodeTotal ``+``=` `ord``(smallStr[i]) ` `        ``largeStrCodeTotal ``+``=` `ord``(largeStr[i]) ` `        ``i ``+``=` `1` `     `  `    ``# Add last character code of large string ` `    ``largeStrCodeTotal ``+``=` `ord``(largeStr[i]) ` `     `  `    ``# Minus the character code of smaller string  ` `    ``# from the character code of large string ` `    ``# The result will be the extra character code ` `    ``intChar ``=` `largeStrCodeTotal ``-` `smallStrCodeTotal ` `    ``return` `chr``(intChar) ` ` `  `# Driver code ` `s1 ``=` `"abcd"` `s2 ``=` `"cbdae"` `extraChar ``=` `findExtraCharacter(s1, s2) ` `print``(``"Extra Character:"``, extraChar) ` ` `  `# This code is contributed by simranjenny84 `

## C#

 `// C# program to find extra  ` `// character in one string  ` `using` `System; ` ` `  `class` `GFG  ` `{  ` `    ``private` `static` `char` `findExtraCharacter(String s1,  ` `                                           ``String s2)  ` `    ``{      ` `        ``String smallStr;  ` `        ``String largeStr;  ` ` `  `        ``// Determine String with extra character.  ` `        ``if``(s1.Length > s2.Length)  ` `        ``{  ` `            ``smallStr = s2;  ` `            ``largeStr = s1;  ` `        ``}  ` `        ``else`  `        ``{  ` `            ``smallStr = s1;  ` `            ``largeStr = s2;  ` `        ``}  ` ` `  `        ``int` `smallStrCodeTotal = 0;  ` `        ``int` `largeStrCodeTotal = 0;  ` `        ``int` `i = 0;  ` ` `  `        ``// Add character codes of both the strings  ` `        ``for``(; i < smallStr.Length; i++)  ` `        ``{  ` `            ``smallStrCodeTotal += smallStr[i];  ` `            ``largeStrCodeTotal += largeStr[i];  ` `        ``}  ` ` `  `        ``// Add last character code of large String.  ` `        ``largeStrCodeTotal += largeStr[i];  ` ` `  `        ``// Minus the character code of smaller string  ` `        ``// from the character code of large string.  ` `        ``// The result will be the extra character code.  ` `        ``int` `intChar = largeStrCodeTotal -  ` `                      ``smallStrCodeTotal;          ` `        ``return` `(``char``)intChar;  ` `    ``}  ` `     `  `    ``public` `static` `void` `Main(String[] args) ` `    ``{  ` `        ``String s1 = ``"abcd"``;  ` `        ``String s2 = ``"cbdae"``;  ` `         `  `        ``char` `extraChar = findExtraCharacter(s1, s2);  ` `        ``Console.WriteLine(``"Extra character: "` `+  ` `                                    ``extraChar);  ` `    ``}  ` `}  ` ` `  `// This code is contributed by PrinciRaj1992 `

Output:

```Extra character: e
```

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.

My Personal Notes arrow_drop_up
Recommended Articles
Page :