📜  连接字符串两个字符串的常见的字符

📅  最后修改于: 2021-10-27 08:32:26             🧑  作者: Mango

两个字符串给,你必须修改1字符串使得第二个字符串的所有常用的字符都被删除,第二字符串的常见的字符必须与第一字符串的常见的字符并置。

例子:

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

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

这个想法是使用哈希映射,其中键是字符,值是存在字符的字符串数。如果一个字符是出现在一个字符串,然后数为1,否则,如果字符存在于两个字符串,数是2。

  1. 将结果初始化为空字符串。
  2. 将地图中第二个字符串的所有字符推入计数为 1。
  3. 遍历第一个字符串并将所有这些字符附加到地图中不存在的结果中。出现在地图中的字符,计数为 2。
  4. 遍历第二个字符串并将所有这些字符附加到计数为 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 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 m = new Dictionary();
        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


输出:

bsxz

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程