public int solution(String str1, String str2) {
List<String> multiSet1 = new ArrayList<>();
List<String> multiSet2 = new ArrayList<>();
List<String> intersection = new ArrayList<>();
List<String> union = new ArrayList<>();
str1 = str1.toUpperCase();
str2 = str2.toUpperCase();
for (int i = 0; i < str1.length() - 1; i++) {
char a = str1.charAt(i);
char b = str1.charAt(i+1);
if (Character.isLetter(a) && Character.isLetter(b)) {
multiSet1.add(Character.toString(a) + Character.toString(b));
}
}
for (int i = 0; i < str2.length() - 1; i++) {
char a = str2.charAt(i);
char b = str2.charAt(i+1);
if (Character.isLetter(a) && Character.isLetter(b)) {
multiSet2.add(Character.toString(a) + Character.toString(b));
}
}
Collections.sort(multiSet1);
Collections.sort(multiSet2);
for (String s : multiSet1) {
if (multiSet2.remove(s)) {
intersection.add(s);
}
union.add(s);
}
for (String s : multiSet2) {
union.add(s);
}
double jakad = 1;
if (union.size() > 0) {
jakad = (double) intersection.size() / union.size();
}
return (int) (jakad * 65536);
}