In this post, we will solve HackerRank Two Strings Problem Solution.
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.
s1 = ‘be’
s2 = ‘cat’
These do not share a substring.
Function Description
Complete the function twoStrings in the editor below.
twoStrings has the following parameter(s):
- string s1: a string
- string s2: another string
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.
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 $2 share no common substrings.
Two Strings C Solution
#include<stdio.h>
#include<string.h>
int main()
{
int k,t;
char *i,*j;
char s1[200000],s2[200000],ch;
scanf("%d",&t);
while(t--)
{
scanf("%s",s1);
scanf("%s",s2);
ch='a';
k=0;
while(ch<='z')
{
i=strchr(s1,ch);
j=strchr(s2,ch);
if(i!=NULL && j!=NULL)
{
k++;
break;
}
else
ch=ch+1;
}
if(k==1)
printf("YES\n");
else
printf("NO\n");
}
}
Two Strings C++ Solution
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int t;
cin>>t;
cin.ignore();
for (int i=0;i<t;i++){
string s1,s2;
getline(cin,s1);
getline(cin,s2);
int c[256];
bool flag=false;
for (int j=0;j<256;j++){
c[j]=0;
}
for (int j=0;j<s1.length();j++){
c[s1[j]-'a']++;
}
for (int j=0;j<s2.length();j++){
if (c[s2[j]-'a']!=0){
cout<<"YES"<<endl;
flag=true;
break;
}
}
if (!flag){
cout<<"NO"<<endl;
}
}
return 0;
}
Two Strings C Sharp Solution
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
public class HC
{
public bool HaveCommon(char[] a, char[] b)
{
foreach (char c in a)
{
//foreach (char d in b)
// if (d == c) return true;
if (b.Contains(c)) return true;
}
return false;
}
}
class Solution {
static void Main(String[] args) {
int n = int.Parse(Console.ReadLine());
List<string> answers = new List<string>();
for (int i = 0; i < n; i++)
{
string temp = Console.ReadLine();
char[] a = temp.ToCharArray().Distinct().ToArray();
temp = Console.ReadLine();
char[] b = temp.ToCharArray().Distinct().ToArray();
HC hc = new HC();
if (hc.HaveCommon(a, b))
answers.Add("YES");
else
answers.Add("NO");
}
foreach (string s in answers) Console.WriteLine(s);
}
}
Two Strings Java Solution
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.regex.*;
import java.util.stream.*;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;
class Result {
/*
* Complete the 'twoStrings' function below.
*
* The function is expected to return a STRING.
* The function accepts following parameters:
* 1. STRING s1
* 2. STRING s2
*/
public static String twoStrings(String s1, String s2) {
Set<Character> s1Set = new HashSet<>();
Set<Character> s2Set = new HashSet<>();
for (char c : s1.toCharArray()) {
s1Set.add(c);
}
for (char c : s2.toCharArray()) {
s2Set.add(c);
}
Set<Character> biggestSet = s1Set.size() >= s2Set.size() ? s1Set : s2Set;
Set<Character> comparedSet = biggestSet == s1Set ? s2Set : s1Set;
for (Character symbol : biggestSet) {
if (comparedSet.stream().anyMatch(c -> c.equals(symbol))) {
return "YES";
}
}
return "NO";
}
}
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
int q = Integer.parseInt(bufferedReader.readLine().trim());
IntStream.range(0, q).forEach(qItr -> {
try {
String s1 = bufferedReader.readLine();
String s2 = bufferedReader.readLine();
String result = Result.twoStrings(s1, s2);
bufferedWriter.write(result);
bufferedWriter.newLine();
} catch (IOException ex) {
throw new RuntimeException(ex);
}
});
bufferedReader.close();
bufferedWriter.close();
}
}
Two Strings JavaScript Solution
function processData(input) {
var lines = input.split("\n");
var N = parseInt(lines[0]);
var s1,s2,hash=[];
for(var i = 0 ; i<N ; i++){
hash=[];
s1=lines[i*2+1];
s2=lines[i*2+2];
for(var j = 0 ; j < s1.length ; j++){
hash[s1.charAt(j)+""]="true";
}
for(var j = 0 ; j < s2.length ; j++){
if(hash[s2.charAt(j)]=="true"){
console.log("YES");
break;
}
if(j==s2.length-1)console.log("NO");
}
}
}
process.stdin.resume();
process.stdin.setEncoding("ascii");
_input = "";
process.stdin.on("data", function (input) {
_input += input;
});
process.stdin.on("end", function () {
processData(_input);
});
Two Strings Python Solution
def common(a, b):
L = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
for c in L:
if c in a and c in b:
return "YES"
return "NO"
t = int(input())
for t in range(t):
a = input()
b = input()
print(common(a, b))
Other Solutions
I’m extremely pleased to find this website. I want to to thank you for ones time for this wonderful read!! I definitely savored every part of it and I have you saved to fav to see new stuff on your website.
This is the perfect website for everyone who really wants to find out about this topic. You understand so much its almost hard to argue with you (not that I really will need to…HaHa). You certainly put a brand new spin on a topic which has been written about for many years. Wonderful stuff, just wonderful.
I’m extremely pleased to uncover this site. I wanted to thank you for ones time due to this wonderful read!! I definitely liked every part of it and i also have you book marked to look at new information in your site.
Excellent article. I definitely love this website. Continue the good work!
I couldn’t refrain from commenting. Very well written!
A fascinating discussion is definitely worth comment. I believe that you should write more about this topic, it might not be a taboo subject but typically people do not speak about these subjects. To the next! Kind regards.