 GFG App
Open App Browser
Continue

# Concatenated string with uncommon characters in Python

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

Examples:

Input : S1 = “aacdb”, S2 = “gafd”
Output : “cbgf”
Input : S1 = “abcs”;, S2 = “cxzca”;
Output : “bsxz”

This problem has an existing solution please refer Concatenated string with uncommon characters of two strings link. We can solve this problem quickly in Python using Set and List Comprehension. The approach is simple,

1. Convert both strings into a set so that they could have only unique characters. Now take the intersection of two sets to get the common character both strings have.
2. Now separate out those characters in each string that are not common in both of them and concatenate the characters.

Implementation:

## Python3

 `# Function to concatenated string with uncommon ` `# characters of two strings `   `def` `uncommonConcat(str1, str2): `   `    ``# convert both strings into set ` `    ``set1 ``=` `set``(str1) ` `    ``set2 ``=` `set``(str2) `   `    ``# take intersection of two sets to get list of ` `    ``# common characters ` `    ``common ``=` `list``(set1 & set2) `   `    ``# separate out characters in each string ` `    ``# which are not common in both strings ` `    ``result ``=` `[ch ``for` `ch ``in` `str1 ``if` `ch ``not` `in` `common] ``+` `[ch ``for` `ch ``in` `str2 ``if` `ch ``not` `in` `common] `   `    ``# join each character without space to get ` `    ``# final string ` `    ``print``( ''.join(result) )`   `# Driver program ` `if` `__name__ ``=``=` `"__main__"``: ` `    ``str1 ``=` `'aacdb'` `    ``str2 ``=` `'gafd'` `    ``uncommonConcat(str1,str2) `

Output

`cbgf`

Time Complexity: O(n+m), where n is length of str1 and m is length of str2
Auxiliary Space: O(m), where m is length of result list.

Approach#2: Using set symmetric difference

We can use the symmetric difference operation of set to pull out all the uncommon character from both the string and make a string.

Implementation:

## Python3

 `# Function to concatenated string with uncommon` `# characters of two strings`   `def` `uncommonConcat(str1, str2):`   `    ``# convert both strings into set` `    ``set1 ``=` `set``(str1)` `    ``set2 ``=` `set``(str2)`   `    ``# Performing symmetric difference operation of set ` `    ``# to pull out uncommon characters` `    ``uncommon ``=` `list``(set1 ^ set2)`   `    ``# join each character without space to get` `    ``# final string` `    ``print``( ''.join(uncommon) )`   `# Driver program` `if` `__name__ ``=``=` `"__main__"``:` `    ``str1 ``=` `'aacdb'` `    ``str2 ``=` `'gafd'` `    ``uncommonConcat(str1,str2)`

Output

`fbgc`

Approach #3: Using Counter() function

## Python3

 `# Function to concatenated string with uncommon` `# characters of two strings` `from` `collections ``import` `Counter`     `def` `uncommonConcat(str1, str2):`   `    ``result ``=` `[]` `    ``frequency_str1 ``=` `Counter(str1)` `    ``frequency_str2 ``=` `Counter(str2)` `    ``for` `key ``in` `frequency_str1:` `        ``if` `key ``not` `in` `frequency_str2:` `            ``result.append(key)` `            ``for` `key ``in` `frequency_str2:` `                ``if` `key ``not` `in` `frequency_str1:` `                    ``result.append(key)`   `    ``# Sorting the result` `    ``result.sort()`   `    ``print``(''.join(``set``(result)))`     `# Driver program` `if` `__name__ ``=``=` `"__main__"``:` `    ``str1 ``=` `'aacdb'` `    ``str2 ``=` `'gafd'` `    ``uncommonConcat(str1, str2)`

Output

`cfbg`

#### Approach #4 : Using two loops and no built-in module

In this approach we will use two loops and a variable to store the final result. We will iterate over the each string once and check that certain element is present in the other string or not, if not then we will just concatenate that character with our variable.

## Python3

 `# Function to concatenate uncommon characters` `# of two different strings`   `def` `concatenate_uncommon(str1,str2):` `    `  `    ``# variable to store` `    ``# the final string` `    `  `    ``final_str ``=` `''` `    `  `    ``# iterating over first string` `    ``# and checking each character is present` `    ``# in the other string or not` `    ``# if not then simply store that character` `    ``# in the variable` `    `  `    ``for` `i ``in` `str1:` `        ``if` `i ``in` `str2:` `            ``pass` `        ``else``:` `            ``final_str``+``=``i` `            `  `    ``# iterating over second string` `    ``# and checking each character is present` `    ``# in the other string or not` `    ``# if not then simply store that character` `    ``# in the same variable as earlier` `    `  `        `  `    ``for` `j ``in` `str2:` `        ``if` `j ``in` `str1:` `            ``pass` `        ``else``:` `            ``final_str``+``=``j` `    `  `    ``# returning the final string as result` `    ``return` `final_str`     `# Driver Code`   `# Example - 1` `str1 ``=` `'abcs'` `str2 ``=` `'cxzca'` `print``(concatenate_uncommon(str1,str2))`   `# Example - 2` `str1 ``=` `'aacdb'` `str2 ``=` `'gafd'` `print``(concatenate_uncommon(str1,str2))`

Output

```bsxz
cbgf```
```Time Complexity - O(n+m) # n = length of string 1 and m = length of string 2.
Auxiliary Space - O(1) # only one extra variable has been used```

My Personal Notes arrow_drop_up