# Concatenated string with uncommon characters of two strings

• Difficulty Level : Medium
• Last Updated : 02 Dec, 2019

Two strings are given and you have to modify 1st string such that all the common characters of the 2nd strings have to be removed and the uncommon characters of the 2nd string have to be concatenated with uncommon characters of the 1st string.

Examples:

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.

```Input : S1 = "aacdb"
S2 = "gafd"
Output : "cbgf"

Input : S1 = "abcs";
S2 = "cxzca";
Output : "bsxz"
```

## Recommended: Please solve it on “PRACTICE ” first, before moving on to the solution.

The idea is to use hash map where key is character and value is number of strings in which character is present. If a character is present in one string, then count is 1, else if character is present in both strings, count is 2.

1. Initialize result as empty string.
2. Push all characters of 2nd string in map with count as 1.
3. Traverse first string and append all those characters to result that are not present in map. Characters that are present in map, make count 2.
4. Traverse second string and append all those characters to result whose count is 1.

## C++

 `// C++ program Find concatenated string with``// uncommon characters of given strings``#include ``using` `namespace` `std;`` ` `string concatenetedString(string s1, string s2)``{``    ``string res = ``""``; ``// result`` ` `    ``// store all characters of s2 in map``    ``unordered_map<``char``, ``int``> m;``    ``for` `(``int` `i = 0; i < s2.size(); i++)``        ``m[s2[i]] = 1;`` ` `    ``// Find characters of s1 that are not``    ``// present in s2 and append to result``    ``for` `(``int` `i = 0; i < s1.size(); i++) {``        ``if` `(m.find(s1[i]) == m.end())``            ``res += s1[i];``        ``else``            ``m[s1[i]] = 2;``    ``}`` ` `    ``// Find characters of s2 that are not``    ``// present in s1.``    ``for` `(``int` `i = 0; i < s2.size(); i++)``        ``if` `(m[s2[i]] == 1)``            ``res += s2[i];``    ``return` `res;``}`` ` `/* Driver program to test above function */``int` `main()``{``    ``string s1 = ``"abcs"``;``    ``string s2 = ``"cxzca"``;``    ``cout << concatenetedString(s1, s2);``    ``return` `0;``}`

## Java

 `// Java program Find concatenated string with``// uncommon characters of given strings``import` `java.util.*;``import` `java.lang.*;``import` `java.io.*;`` ` `class` `gfg {``    ``public` `static` `String concatenatedString(String s1, String s2)``    ``{``        ``// Result``        ``String res = ``""``;``        ``int` `i;`` ` `        ``// creating a hashMap to add characters in string s2``        ``HashMap m = ``new` `HashMap();``        ``for` `(i = ``0``; i < s2.length(); i++)``            ``m.put(s2.charAt(i), ``1``);`` ` `        ``// Find characters of s1 that are not``        ``// present in s2 and append to result``        ``for` `(i = ``0``; i < s1.length(); i++)``            ``if` `(!m.containsKey(s1.charAt(i)))``                ``res += s1.charAt(i);``            ``else``                ``m.put(s1.charAt(i), ``2``);`` ` `        ``// Find characters of s2 that are not``        ``// present in s1.``        ``for` `(i = ``0``; i < s2.length(); i++)``            ``if` `(m.get(s2.charAt(i)) == ``1``)``                ``res += s2.charAt(i);`` ` `        ``return` `res;``    ``}`` ` `    ``// Driver code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``String s1 = ``"abcs"``;``        ``String s2 = ``"cxzca"``;``        ``System.out.println(concatenatedString(s1, s2));``    ``}``}`` ` `/* This code is contributed by Devarshi_Singh*/`

## Python 3

 `# Python3 program Find concatenated string ``# with uncommon characters of given strings ``def` `concatenetedString(s1, s2):``    ``res ``=` `"" ``# result ``    ``m ``=` `{}``     ` `    ``# store all characters of s2 in map ``    ``for` `i ``in` `range``(``0``, ``len``(s2)):``        ``m[s2[i]] ``=` `1`` ` `    ``# Find characters of s1 that are not ``    ``# present in s2 and append to result ``    ``for` `i ``in` `range``(``0``, ``len``(s1)):``        ``if``(``not` `s1[i] ``in` `m):``            ``res ``=` `res ``+` `s1[i]``        ``else``:``            ``m[s1[i]] ``=` `2`` ` `    ``# Find characters of s2 that are not ``    ``# present in s1.         ``    ``for` `i ``in` `range``(``0``, ``len``(s2)):``        ``if``(m[s2[i]] ``=``=` `1``):``            ``res ``=` `res ``+` `s2[i]`` ` `    ``return` `res     ``     ` `# Driver Code``if` `__name__ ``=``=` `"__main__"``:``    ``s1 ``=` `"abcs"``    ``s2 ``=` `"cxzca"``    ``print``(concatenetedString(s1, s2))`` ` `# This code is contributed``# by Sairahul099`

## C#

 `// C# program Find concatenated string with``// uncommon characters of given strings ``using` `System;``using` `System.Collections.Generic;`` ` `class` `GFG ``{``    ``public` `static` `String concatenatedString(String s1, ``                                            ``String s2)``    ``{``        ``// Result``        ``String res = ``""``;``        ``int` `i;`` ` `        ``// creating a hashMap to add characters``        ``// in string s2``        ``Dictionary<``char``, ``                   ``int``> m = ``new` `Dictionary<``char``, ``                                           ``int``>();``        ``for` `(i = 0; i < s2.Length; i++)``            ``if` `(!m.ContainsKey(s2[i]))``                ``m.Add(s2[i], 1);`` ` `        ``// Find characters of s1 that are not``        ``// present in s2 and append to result``        ``for` `(i = 0; i < s1.Length; i++)``            ``if` `(!m.ContainsKey(s1[i]))``                ``res += s1[i];``            ``else``                ``m[s1[i]] = 2;`` ` `        ``// Find characters of s2 that are not``        ``// present in s1.``        ``for` `(i = 0; i < s2.Length; i++)``            ``if` `(m[s2[i]] == 1)``                ``res += s2[i];`` ` `        ``return` `res;``    ``}`` ` `    ``// Driver code``    ``public` `static` `void` `Main(String[] args)``    ``{``        ``String s1 = ``"abcs"``;``        ``String s2 = ``"cxzca"``;``        ``Console.WriteLine(concatenatedString(s1, s2));``    ``}``}`` ` `// This code is contributed by PrinciRaj1992`

Output:

```bsxz
```

This article is contributed by Harshit Agrawal. 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.