HackerRank Two Strings Explained - Java

preview_player
Показать описание


Preparing For Your Coding Interviews? Use These Resources
————————————————————

Other Social Media
----------------------------------------------

Show Support
------------------------------------------------------------------------------

#coding #programming #softwareengineering
Рекомендации по теме
Комментарии
Автор

We can declare one HashSet, in second for loop check for contains, this way we can reduce some lines.

maheshnaik
Автор

solution which will reduce some lines of code :-)
public static String twoStrings(String s1, String s2) {
HashSet<Character>s1_chars = new HashSet();
for (int i = 0; i < s1.length() ; i++) {
s1_chars.add(s1.charAt(i));
}
for( int i = 0; i < s2.length(); i++) {
if {
return "YES";
}
}
return "NO";
}

sahilbisht
Автор

finally, a proper English tutorial Thank you !

Y.Albasel
Автор

public static String twoStrings(String s1, String s2) {
HashSet<Character>hs=new HashSet();
for(char c:s1.toCharArray()){
hs.add(c);
}
for(char c:s2.toCharArray()){
if(hs.contains(c)){
return "YES";
}
}
return "NO";
}

arunkumarvaithiyanathan
Автор

public static String twoStrings(String s1, String s2) {


Set<Character> set = new HashSet<>();

for(int i=0;i<s1.length();i++){
set.add(s1.charAt(i));
}

for(int i=0;i<s2.length();i++){

return "YES";
} }

return "NO";
}

divyashreemh
Автор

For ppl who are commenting that we could just implement hashmap and iterate over the shorter string it won't work if strings have repeating characters

travelingDeveloper
Автор

static String twoStrings(String s1, String s2) {
String ans = "NO";
for (int i = 97; i <= 122; i++) {
String me = String.valueOf((char) i);
if (s1.contains(me) && s2.contains(me)) {
return "YES";
}
}
return ans;
}

MithleshSingh
Автор

Awesome video! Just wanted to share my solution with a single int instead of a HashSet.
static String twoStrings(String s1, String s2) {
int checker = 0;
for (char c : s1.toCharArray()) {
int val = c - 'a';
if ((checker & (1 << val)) <= 0)
checker |= (1 << val);
}
for (char c : s2.toCharArray()) {
int val = c - 'a';
if ((checker & (1 << val)) > 0)
return "YES";
}
return "NO";
}

krokill
Автор

This is my JAVA solution:

public static String twoStrings(String s1, String s2) {
HashSet<Character> set = new HashSet<Character>();
for(int i = 0 ; i < s1.length() ; i++){
set.add(s1.charAt(i)) ;
if(set.size() == 26) break ;
}
for(int i = 0 ; i < s2.length() ; i++){
return "YES" ;
}
return "NO" ;
}

m.houdeib
Автор

Great video. But I have a question, On hacker rank, how to debug using the hidden test case. For example, if I failed hidden test cases 3, and 4. And I don't know how to change the code to fix it. How can I debug the code with the test cases

genli
Автор

We can just use 1 HashSet and loop the second string and return true for the first match.

AaamrK
Автор

I think this solution is simpler and uses constant space and linear complexity:

static String twoStrings(String s1, String s2) {
boolean[] letters = new boolean[26];
for(char c : s1.toCharArray()) letters[c - 'a'] = true;
for(char c : s2.toCharArray()) if(letters[c - 'a']) return "YES";
return "NO";
}

Marc-sfxr
Автор

public static String twoStrings(String s1, String s2) {

return s1.chars()
.mapToObj(x -> (char) x)
.distinct()
.anyMatch(y -> ? "YES" : "NO";
}

sakaradhikari