Hello Programmers, In this post, you will learn how to solve HackerRank Two Strings Solution. This problem is a part of the HackerRank Algorithms Series.
One more thing to add, don’t straight away look for the solutions, first try to solve the problems by yourself. If you find any difficulty after trying several times, then look for the solutions. We are going to solve the HackerRank Algorithms problems using C, CPP, JAVA, PYTHON, JavaScript & SCALA Programming Languages.

HackerRank Two Strings Solution
Task
Given two strings, determine if they share a common substring. A substring may be as small as one character.
Example
s1 = ‘and’
s2 = ‘art’
These share the common substring a.
These do not share a substring.
s1 = ‘be’
s2 = ‘cat’
Function Description
Complete the function twoStrings in the editor below.
twoStrings has the following parameter(s):
Returns
- string: either
YES
orNO
Input Format
The first line contains a single integer p, the number of test cases.
The following p pairs of lines are as follows:
- The first line contains string s1.
- The second line contains string s2.
Constraints
- s1 and s2 consist of characters in the range ascii[a-z].
- 1 <= p <= 10
- 1 <= |s1|, |s2| <= 105
Output Format
For each pair of strings, return YES
or NO
.
Sample Input
2
hello
world
hi
world
Sample Output
YES
NO
Explanation
We have p = 2 pairs to check:
- s1 = “hello”, s2 = “world”. The substrings “o” and “1” are common to both strings.
- a = “hi”, b = “world”. s1 and s2 share no common substrings.
HackerRank Two Strings Solution
HackerRank Two Strings Solution in C
#include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> int main() { int k; scanf("%d",&k); while(k>0) { char str[110000],btr[110000]; int cn1[500],cn2[500],i,j,t,a,b; for(i=0;i<500;i++) { cn1[i]=0; cn2[i]=0; } scanf("%s",str); scanf("%s",btr); a=strlen(str); b=strlen(btr); for(i=0;i<a;i++) { cn1[str[i]]++; } for(i=0;i<b;i++) { cn2[btr[i]]++; } t=0; for(i=0;i<500;i++) { if(cn1[i]*cn2[i]>0) { t=1; break; } } if(t) { printf("YES\n"); } else { printf("NO\n"); } k--; } return 0; }
HackerRank Two Strings Solution in Cpp
#include <bits/stdc++.h> using namespace std; int main() { int a; cin >> a; for (int g=0;g<a; g++) { string b,c; cin >> b >> c; map <char,int> k; for (int y=0;y<b.length(); y++) k[b[y]]=1; int counter=0; for (int y=0;y<c.length(); y++) { if (k[c[y]]) counter=1; } if (counter) cout << "YES" << '\n'; else cout << "NO" << '\n'; }return 0; }
HackerRank Two Strings Solution in Java
import java.util.Scanner; public class Solution { public static void main(String[] args) throws Exception { Scanner in = new Scanner(System.in); int N = in.nextInt(); testCase: for(int i = 0; i < N; i++) { String left = in.next(); String right = in.next(); boolean[] leftC = new boolean[26]; for(int j = 0; j < left.length(); j++) { leftC[left.charAt(j) - 'a'] = true; } for(int k = 0; k < right.length(); k++) { if(leftC[right.charAt(k) - 'a']) { System.out.println("YES"); continue testCase; } } System.out.println("NO"); } } }
HackerRank Two Strings Solution in Python
t=input() for j in xrange(t): a=set(raw_input().strip()) b=set(raw_input().strip()) if len(a.intersection(b))>0: print "YES" else: print "NO"
HackerRank Two Strings Solution using JavaScript
function containsCommonSubstring(a,b) { // Since a one character common substring is still a substring, we can just check for // a character in common. A map should be easy way to do that. var map = {}; for (var i = 0; i < a.length; i++) { // We could count it, but just having an entry should be sufficient. Seems like a boolean. map[a[i]] = true; } for (var i = 0; i < b.length; i++) { if (map[b[i]]) return true; } return false; } function processData(input) { var lines = input.split("\n"); var T = lines[0]; for (var i = 0; i < T; i++) { var a = lines[2*i+1]; var b = lines[2*i+2]; if (containsCommonSubstring(a,b)) { process.stdout.write("YES\n"); } else { process.stdout.write("NO\n"); } } } process.stdin.resume(); process.stdin.setEncoding("ascii"); _input = ""; process.stdin.on("data", function (input) { _input += input; }); process.stdin.on("end", function () { processData(_input); });
HackerRank Two Strings Solution in Scala
object Solution { def main(args : Array[String]): Unit = { val input = scala.io.Source.stdin.getLines drop 1 input.grouped(2).foreach { twoLines => val List(str1,str2) = twoLines.toList val commonChars = str1.toSet.intersect(str2.toSet) if (commonChars.isEmpty) println("NO") else println("YES") } } }
HackerRank Two Strings Solution in Pascal
const fi=''; fo=''; var a,b:string; t:byte; f,g:text; i:longint; function kt(a,b:string):boolean; var j,k:longint; begin kt:=false; for j:=1 to length(a) do for k:=1 to length(b) do if a[j]=b[k] then exit(true); end; begin assign(f,fi);reset(f); readln(f,t); assign(g,fo);rewrite(g); for i:=1 to t do begin readln(f,a); readln(f,b); if kt(a,b) then writeln(g,'YES') else writeln(g,'NO'); end; close(g); close(f); end.
Disclaimer: This problem (Two Strings) is generated by HackerRank but the solution is provided by Chase2learn. This tutorial is only for Educational and Learning purposes.