Open in App
Not now

# Find one extra character in a string

• Difficulty Level : Easy
• Last Updated : 28 Mar, 2023

Given two strings which are of lengths n and n+1. The second string contains all the characters of the first string, but there is one extra character. Your task is 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```

Method 1(Brute Force):-  Check with two for a loop.

1. Take two input strings s1 and s2 as inputs.
2. Find the length of both strings using the length() function.
3. For each character c in s1, iterate over all characters d in s2 until you find a mismatch. If a mismatch is found, break out of the inner loop and continue with the next character in s1. If all characters in s2 match the character c, then c is the extra character and we can return it.
4. If we reach the end of s1 and have not found an extra character, then the extra character must be the last character in s2.
5. Return the extra character.

## C++

 `#include ` `#include ` `using` `namespace` `std;`   `char` `findExtraChar(string s1, string s2)` `{` `    ``// input length of strings` `    ``int` `n1 = s1.length();` `    ``int` `n2 = s2.length();` `    ``int` `i, j;` `    ``for` `(i = 0; i < n1; i++) {` `        ``for` `(j = 0; j < n2; j++) {` `            ``if` `(s1[i] == s2[j]) {` `                ``break``;` `            ``}` `        ``}` `        ``if` `(j == n2) {` `            ``return` `s1[i];` `        ``}` `    ``}` `    ``return` `s2[n2 - 1];` `}`   `int` `main()` `{` `    ``string s1 = ``"abcd"``;` `    ``string s2 = ``"cbdad"``;` `    ``cout << findExtraChar(s1, s2) << endl;` `    ``return` `0;` `}`

## C#

 `using` `System;`   `class` `Program {` `    ``static` `char` `FindExtraChar(``string` `s1, ``string` `s2)` `    ``{` `        ``// get length of strings` `        ``int` `n1 = s1.Length;` `        ``int` `n2 = s2.Length;` `        ``int` `i, j;` `        ``// iterate through the first string` `        ``for` `(i = 0; i < n1; i++) {` `            ``// iterate through the second string` `            ``for` `(j = 0; j < n2; j++) {` `                ``// if the current character of the first` `                ``// string matches the current character of` `                ``// the second string, break out of the loop` `                ``// and move on to the next character in the` `                ``// first string` `                ``if` `(s1[i] == s2[j]) {` `                    ``break``;` `                ``}` `            ``}`   `            ``// if the loop finished without finding a match,` `            ``// return the current character of the first` `            ``// string` `            ``if` `(j == n2) {` `                ``return` `s1[i];` `            ``}` `        ``}`   `        ``// if we get to this point, it means that the extra` `        ``// character is at the end of the second string, so` `        ``// return it` `        ``return` `s2[n2 - 1];` `    ``}`   `    ``static` `void` `Main(``string``[] args)` `    ``{` `        ``string` `s1 = ``"abcd"``;` `        ``string` `s2 = ``"cbdad"``;` `        ``Console.WriteLine(FindExtraChar(s1, s2));` `    ``}` `}` `// This code is contributed by sarojmcy2e`

• Time Complexity:- O(n^2)
• Space Complexity:- O(1)

### Method 2: Using Hash Map

Create an empty hash table and insert all character of the second string. Now remove all characters of the first string. The remaining character is the extra character.

Implementation:

## 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` `import` `java.io.*;` `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``[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 < 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`

## Javascript

 ``

Output:

`d`

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

Method 3(Bits):- traverse first and second string from starting with the xor operation at the end you get the character which is extra.

## 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

 ``

## Javascript

 ``

Output:

`d`

• Time Complexity:- O(n+n+1)
• Space Complexity:- O(1).

### Method 4(Character Code):

Add the character codes of both strings. Minus character codes of smaller strings from larger string and convert the resulting integer into a character.

Implementation:

## 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` `import` `java.io.*;` `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`

## Javascript

 ``

Output:

`Extra character: e`

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

My Personal Notes arrow_drop_up
Related Articles