String concatenada con caracteres poco comunes de dos strings

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. 

  1. Inicializa el resultado como una string vacía.
  2. Empuje todos los caracteres de la segunda string en el mapa contando como 1.
  3. 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.
  4. 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>
Producción

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *