Skip to content
Related Articles

Related Articles

Improve Article
Check if there is any common character in two given strings
  • Difficulty Level : Hard
  • Last Updated : 27 May, 2021

Given two strings. The task is to check that is there any common character in between two strings. 

Examples: 

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

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

Approach: Traverse the 1st string and map the characters of the string with its frequency, in this map characters act as a key and the frequency its value. Then traverse the second string and we will check if there is any character that is present in both the string then it is confirmed that there is a common sub-sequence.

Below is the implementation of above approach:  

C++




// C++ implementation of above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to match character
bool check(string s1, string s2)
{
    // Create a map to map
    // characters of 1st string
    map<char, int> 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<Character, Integer> 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<char,int> mp = new Dictionary<char,int>();
 
    // 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




<script>
 
// Javascript implementation of above approach
 
// Function to match character
function check( s1, s2)
{
    // Create a map to map
    // characters of 1st string
    var map = new Map();
 
    // traverse the first string
    // and create a hash map
    for (var i = 0; i < s1.length; i++)
    {
        if(map.has(s1[i].charCodeAt(0)))
        {
            map[s1[i].charCodeAt(0)]++;
        }
        else
        {
            map[s1[i].charCodeAt(0)]=1;
        }
         
    }
 
    // traverse the second string
    // and if there is any
    // common character than return 1
    for (var i = 0; i < s2.length; i++)
        if (map[s2[i].charCodeAt(0)] > 0)
            return true;
 
    // else return 0
    return false;
}
 
// Driver code
// Declare two strings
var s1 = "geeksforgeeks", s2 = "geeks";
// Find if there is a common subsequence
var yes_or_no = check(s1, s2);
if (yes_or_no)
    document.write( "Yes");
else
    document.write( "No" );
 
</script>
Output: 



Yes

 

Time Complexity: O(n) where n is the length of the string
 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live 




My Personal Notes arrow_drop_up
Recommended Articles
Page :