Se dan dos strings y debe modificar la 1.ª string de modo que se eliminen todos los caracteres comunes de la 2.ª string y los caracteres poco comunes de la 2.ª string se tengan que concatenar con los caracteres poco comunes de la 1.ª string.
Ejemplos:
Input : S1 = "aacdb" S2 = "gafd" Output : "cbgf" Input : S1 = "abcs"; S2 = "cxzca"; Output : "bsxz"
La idea es usar un mapa hash donde la clave es el carácter y el valor es el número de strings en las que está presente el carácter. Si un carácter está presente en una string, el conteo es 1; de lo contrario, si el carácter está presente en ambas strings, el conteo es 2.
- Inicializa el resultado como una string vacía.
- Empuje todos los caracteres de la segunda string en el mapa contando como 1.
- Recorra la primera string y agregue todos los caracteres al resultado que no están presentes en el mapa. Caracteres que están presentes en el mapa, cuenta 2.
- Recorra la segunda string y agregue todos esos caracteres al resultado cuyo recuento es 1.
Implementación:
C++
// 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 << concatenatedString(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<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*/
Python 3
# Python3 program Find concatenated string # with uncommon characters of given strings def 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 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
Javascript
<script> // JavaScript program Find concatenated string with // uncommon characters of given strings function 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>
bsxz
Complejidad de tiempo: O(M + N) , donde M y N representan el tamaño de las dos strings dadas.
Espacio auxiliar: O(max(M, N)), donde M y N representan el tamaño de las dos strings dadas.
Este artículo es una contribución de Harshit Agrawal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA