Check if two strings have a common substring
Last Updated :
27 Jan, 2023
You are given two strings str1 and str2. You have to check if the two strings share a common substring.
Examples :
Input : str1 = "HELLO"
str2 = "WORLD"
Output : YES
Explanation : The substrings "O" and
"L" are common to both str1 and str2
Input : str1 = "HI"
str2 = "ALL"
Output : NO
Explanation : Because str1 and str2
have no common substrings
A basic approach runs in O(n^2), where we compare every character of string 1 with every character of string 2 and replace every matched character with a "_" and set flag variable as true.
An efficient approach works in O(n). We basically need to check if there is a common character or not. We create a vector of size 26 for alphabets and initialize them as 0. For every character in string 1 we increment vector index of that character eg: v[s1[i]-'a']++, for every character of string 2 we check vector for the common characters if v[s2[i]-'a'] > 0 then set flag = true and v[s2[i]-'a']-- such that one character of string 2 is compared with only one character of string 1.
Implementation:
C++
// CPP program to check if two strings have
// common substring
#include <bits/stdc++.h>
using namespace std;
const int MAX_CHAR = 26;
// function to return true if strings have
// common substring and no if strings have
// no common substring
bool twoStrings(string s1, string s2) {
// vector for storing character occurrences
vector<bool> v(MAX_CHAR, 0);
// increment vector index for every
// character of str1
for (int i = 0; i < s1.length(); i++)
v[s1[i] - 'a'] = true;
// checking common substring of str2 in str1
for (int i = 0; i < s2.length(); i++)
if (v[s2[i] - 'a'])
return true;
return false;
}
// driver program
int main() {
string str1 = "hello";
string str2 = "world";
if (twoStrings(str1, str2))
cout << "Yes";
else
cout << "No";
return 0;
}
Java
// Java program to check if two strings have
// common substring
import java.util.Arrays;
class GFG
{
static int MAX_CHAR = 26;
// function to return true if strings have
// common substring and no if strings have
// no common substring
static boolean twoStrings(String s1, String s2)
{
// vector for storing character occurrences
boolean v[]=new boolean[MAX_CHAR];
Arrays.fill(v,false);
// increment vector index for every
// character of str1
for (int i = 0; i < s1.length(); i++)
v[s1.charAt(i) - 'a'] = true;
// checking common substring of str2 in str1
for (int i = 0; i < s2.length(); i++)
if (v[s2.charAt(i) - 'a'])
return true;
return false;
}
// Driver code
public static void main (String[] args)
{
String str1 = "hello";
String str2 = "world";
if (twoStrings(str1, str2))
System.out.print("Yes");
else
System.out.print("No");
}
}
// This code is contributed by Anant Agarwal.
Python3
# Python3 code to implement the approach
# python program to check if two strings have
# common substring
MAX_CHAR = 26
# function to return true if strings have
# common substring and no if strings have
# no common substring
def twoStrings(s1, s2):
# vector for storing character occurrences
v = [0 for i in range(MAX_CHAR)]
# increment vector index for every
# character of str1
for i in range(len(s1)):
v[ord(s1[i]) - ord('a')] = True
# checking common substring of str2 in str1
for i in range(len(s2)):
if v[ord(s2[i]) - ord('a')]:
return True
return False
# driver program
str1 = "hello"
str2 = "world"
if twoStrings(str1, str2):
print("Yes")
else:
print("No")
# This code is contributed by phasing17
C#
// C# program to check if two
// strings have common substring
using System;
class GFG
{
static int MAX_CHAR = 26;
// function to return true if strings have
// common substring and no if strings have
// no common substring
static bool twoStrings(String s1, String s2)
{
// vector for storing character occurrences
bool []v = new bool[MAX_CHAR];
// Arrays.fill(v,false);
for(int i = 0; i < MAX_CHAR; i++)
v[i]=false;
// increment vector index for
// every character of str1
for (int i = 0; i < s1.Length; i++)
v[s1[i] - 'a'] = true;
// checking common substring of str2 in str1
for (int i = 0; i < s2.Length; i++)
if (v[s2[i] - 'a'])
return true;
return false;
}
// Driver code
public static void Main ()
{
String str1 = "hello";
String str2 = "world";
if (twoStrings(str1, str2))
Console.Write("Yes");
else
Console.Write("No");
}
}
// This code is contributed by nitin mittal.
JavaScript
<script>
// javascript program to check if two strings have
// common substring
var MAX_CHAR = 26;
// function to return true if strings have
// common substring and no if strings have
// no common substring
function twoStrings(s1, s2) {
// vector for storing character occurrences
var v = Array(MAX_CHAR).fill(0);
// increment vector index for every
// character of str1
for (var i = 0; i < s1.length; i++)
v[s1[i] - 'a'] = true;
// checking common substring of str2 in str1
for (var i = 0; i < s2.length; i++)
if (v[s2[i] - 'a'])
return true;
return false;
}
// driver program
var str1 = "hello";
var str2 = "world";
if (twoStrings(str1, str2))
document.write( "Yes");
else
document.write("No");
// This code is contributed by rutvik_56.
</script>
Time Complexity : O(n)
Auxiliary Space: O(1)
Similar Reads
Number of common base strings for two strings Given two strings s1 and s2, we need to find number of common base strings of two. A substring of a string s is called base string if repeated concatenation of the substring results in s. Examples: Input : s1 = "pqrspqrs" s2 = "pqrspqrspqrspqrs" Output : 2 The two common base strings are "pqrs" and
6 min read
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
8 min read
Check if String Contains Substring in Python This article will cover how to check if a Python string contains another string or a substring in Python. Given two strings, check whether a substring is in the given string. Input: Substring = "geeks" String="geeks for geeks"Output: yesInput: Substring = "geek" String="geeks for geeks"Output: yesEx
8 min read
Check if a string is substring of another Given two strings txt and pat, the task is to find if pat is a substring of txt. If yes, return the index of the first occurrence, else return -1.Examples : Input: txt = "geeksforgeeks", pat = "eks"Output: 2Explanation: String "eks" is present at index 2 and 9, so 2 is the smallest index.Input: txt
8 min read
Print the longest common substring Given two strings âXâ and âYâ, print the length of the longest common substring. If two or more substrings have the same value for the longest common substring, then print any one of them. Examples: Input : X = "GeeksforGeeks", Y = "GeeksQuiz" Output : Geeks Input : X = "zxabcdezy", Y = "yzabcdezx"
15+ min read