Check if there is any common character in two given strings
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