📌  相关文章
📜  检查两个给定字符串是否有任何公共字符

📅  最后修改于: 2021-10-27 09:05:41             🧑  作者: Mango

给定两个字符串。任务是检查两个字符串之间是否有任何公共字符。

例子:

Input: s1 = "geeksforgeeks", s2 = "geeks"
Output: Yes

Input: s1 = "geeks", s2 = "for"
Output: No

做法:遍历1字符串和字符串的字符,它的频率地图,在这个地图的字符作为一个关键和频率它的价值。然后遍历第二个字符串,我们会检查是否有其存在两个字符串中则确认有一个共同的子序列中的任何字符。

下面是上述方法的实现:

C++
// C++ implementation of above approach
#include 
using namespace std;
 
// Function to match character
bool check(string s1, string s2)
{
    // Create a map to map
    // characters of 1st string
    map map;
 
    // traverse the first string
    // and create a hash map
    for (int i = 0; i < s1.length(); i++)
        map[s1[i]]++;
 
    // traverse the second string
    // and if there is any
    // common character than return 1
    for (int i = 0; i < s2.length(); i++)
        if (map[s2[i]] > 0)
            return true;
 
    // else return 0
    return false;
}
 
// Driver code
int main()
{
    // Declare two strings
    string s1 = "geeksforgeeks", s2 = "geeks";
 
    // Find if there is a common subsequence
    bool yes_or_no = check(s1, s2);
 
    if (yes_or_no == true)
        cout << "Yes" << endl;
 
    else
        cout << "No" << endl;
 
    return 0;
}


Java
// Java implementation of above approach
import java.util.*;
 
class GFG
{
 
// Function to match character
static boolean check(String s1, String s2)
{
    // Create a map to map
    // characters of 1st string
    Map mp = new HashMap<>();
 
    // traverse the first string
    // and create a hash map
    for (int i = 0; i < s1.length(); i++)
    {
        mp.put(s1.charAt(i), mp.get(s1.charAt(i)) == null ? 1 : mp.get(s1.charAt(i)) + 1);
    }
 
    // traverse the second string
    // and if there is any
    // common character than return 1
    for (int i = 0; i < s2.length(); i++)
    {
        if (mp.get(s2.charAt(i)) > 0)
        {
            return true;
        }
    }
 
    // else return 0
    return false;
}
 
// Driver code
public static void main(String[] args)
{
    // Declare two strings
    String s1 = "geeksforgeeks", s2 = "geeks";
 
    // Find if there is a common subsequence
    boolean yes_or_no = check(s1, s2);
 
    if (yes_or_no == true)
    {
        System.out.println("Yes");
    }
    else
    {
        System.out.println("No");
    }
}
}
 
/* This code contributed by PrinciRaj1992 */


Python3
# Python3 program to check whether
# two lists are overlapping or not
def is_member(List, key):
 
    for i in range(0, len(List)):
        if key == List[i]:
            return True
    return False
 
def overlap(List1 , List2):
 
    for key in List1:
        if is_member( List2, key ):
            return True
 
    return False
 
# Driver Code
if __name__ == '__main__':
 
    s1 = 'geeksforgeeks'
    s2 = 'geeks'
 
    List1 = list( s1 )
    List2 = list( s2 )
 
    yes_or_no = str(overlap( List1, List2 ))
     
    if (yes_or_no):
        print("Yes")
    else:
        print("No")
 
# This code is contributed
# by Krishna_Yadav


C#
// C# program to check if successive
// pair of numbers in the queue are
// consecutive or not
using System;
using System.Collections.Generic;
 
class GFG
{
 
// Function to match character
static Boolean check(String s1, String s2)
{
    // Create a map to map
    // characters of 1st string
    Dictionary mp = new Dictionary();
 
    // traverse the first string
    // and create a hash map
    for (int i = 0; i < s1.Length; i++)
    {
        if(mp.ContainsKey(s1[i]))
        {
            var val = mp[s1[i]];
            mp.Remove(s1[i]);
            mp.Add(s1[i], val + 1);
        }
        else
        {
            mp.Add(s1[i], 1);
        }
    }
 
    // traverse the second string
    // and if there is any
    // common character than return 1
    for (int i = 0; i < s2.Length; i++)
    {
        if (mp[s2[i]] > 0)
        {
            return true;
        }
    }
 
    // else return 0
    return false;
}
 
// Driver code
public static void Main(String[] args)
{
    // Declare two strings
    String s1 = "geeksforgeeks", s2 = "geeks";
 
    // Find if there is a common subsequence
    Boolean yes_or_no = check(s1, s2);
 
    if (yes_or_no == true)
    {
        Console.WriteLine("Yes");
    }
    else
    {
        Console.WriteLine("No");
    }
}
}
 
// This code contributed by Rajput-Ji


Javascript


输出:

Yes

时间复杂度: O(n) 其中 n 是字符串的长度

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