Given two strings, determine if they share a common substring. A substring may be as small as one character.
s1 = 'and'
s2 = 'art'
These share the common substring a.
s1 = 'be'
s2 = 'cat'
These do not share a substring.
Complete the function twoStrings in the editor below.
twoStrings has the following parameter(s):
The first line contains a single integer p, the number of test cases.
The following p pairs of lines are as follows:
For each pair of strings, return YES or NO.
2
hello
world
hi
world
YES
NO
We have p = 2 pairs to check:
static String twoStrings(String s1, String s2) {
HashMap<String, Integer> hm = new HashMap<>();
String[] s1Array = s1.split("");
String[] s2Array = s2.split("");
for (String s : s1Array)
hm.put(s, 0);
for (String s : s2Array)
if (hm.containsKey(s))
return "YES";
return "NO";
}
static String twoStrings(String s1, String s2) {
Set<String> set = new HashSet<>();
String[] s1Array = s1.split("");
String[] s2Array = s2.split("");
for (String s : s1Array)
set.add(s);
for (String s : s2Array)
if (set.contains(s))
return "YES";
return "NO";
}
두 문자열을 한 문자씩 배열에 넣고, 처음 입력받은 단어는 해시맵에 넣는다.
두 번째 단어를 이루는 문자 중 겹치는 것이 있는지 확인한다.
문제를 풀면서 분명 이 코드가 맞는데 hackerrank 사이트에서는 계속 실패로 나왔었다. 자세히 보니 Java7으로 되어있었다. 그래서 java8로 바꿨더니 성공했다.
java7에서 java8 이상으로 바뀌면서 해시 퍼포먼스 향상을 위해 linked list에서 balanced tree로 바뀌었다는데 이 때문인지는 모르겠다. 내가 뭔가 틀렸을지도...😥