Concatenated string with uncommon characters of two strings

24 May, 2022
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:  
Input : S1 = "aacdb"
        S2 = "gafd"
Output : "cbgf"

Input : S1 = "abcs";
        S2 = "cxzca";
Output : "bsxz"
 
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.  
Initialize result as empty string.Push all characters of 2nd string in map with count as 1.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.Traverse second string and append all those characters to result whose count is 1.
Initialize result as empty string.
Push all characters of 2nd string in map with count as 1.
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.
Traverse second string and append all those characters to result whose count is 1.
 
C++
Java
Python 3
C#
Javascript
// C++ program Find concatenated string with// uncommon characters of given strings#include <bits/stdc++.h>using namespace std; string concatenatedString(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 program Find concatenated string with// uncommon characters of given stringsimport 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<Character, Integer> m = new HashMap<Character, Integer>();        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*/
# Python3 program Find concatenated string# with uncommon characters of given stringsdef concatenatedString(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 Codeif __name__ == "__main__":    s1 = "abcs"    s2 = "cxzca"    print(concatenetedString(s1, s2)) # This code is contributed# by Sairahul099
// C# program Find concatenated string with// uncommon characters of given stringsusing 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
<script> // JavaScript program Find concatenated string with// uncommon characters of given stringsfunction concatenatedString(s1, s2){    let res = ""; // result     // store all characters of s2 in map    let m = new Map();    for (let i = 0; i < s2.length; i++)        m.set(s2[i],1);     // Find characters of s1 that are not    // present in s2 and append to result    for (let i = 0; i < s1.length; i++) {        if (m.has(s1[i]) == false)            res += s1[i];        else            m.set(s1[i] , 2);    }     // Find characters of s2 that are not    // present in s1.    for (let i = 0; i < s2.length; i++)        if (m.get(s2[i]) == 1)            res += s2[i];    return res;} /* Driver program to test above function */let s1 = "abcs";let s2 = "cxzca";document.write(concatenetedString(s1, s2)); // This code is contributed by shinjanpatra</script>
Output:  
bsxz
Time Complexity: O(M + N), where M and N represents the size of the given two strings.Auxiliary Space: O(max(M, N)), where M and N represents the size of the given two strings.
This article is contributed by Harshit Agrawal. 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. 
Sairahul Jella
Devarshi_Singh
princiraj1992
shinjanpatra
surinderdawra388
samim2000
cpp-unordered_map
Microsoft
Hash
Strings
Microsoft
Hash
Strings
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Hash Functions and list/types of Hash functions
Overview of Data Structures | Set 2 (Binary Tree, BST, Heap and Hash)
Sorting a Map by value in C++ STL
File Organization in DBMS | Set 2
Applications of Hashing
Reverse a string in Java
Write a program to reverse an array or string
C++ Data Types
KMP Algorithm for Pattern Searching
Write a program to print all permutations of a given string