Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Intersection of two strings in Java

Need a Java function to find intersection of two strings. i.e. characters common to the strings.

Example:

String s1 = new String("Sychelless");
String s2 = new String("Sydney");
like image 448
Deepak Avatar asked Dec 15 '10 09:12

Deepak


2 Answers

Using HashSet<Character>:

HashSet<Character> h1 = new HashSet<Character>(), h2 = new HashSet<Character>();
for(int i = 0; i < s1.length(); i++)                                            
{
  h1.add(s1.charAt(i));
}
for(int i = 0; i < s2.length(); i++)
{
  h2.add(s2.charAt(i));
}
h1.retainAll(h2);
Character[] res = h1.toArray(new Character[0]);

This is O(m + n), which is asymptotically optimal.

like image 134
Matthew Flaschen Avatar answered Sep 17 '22 11:09

Matthew Flaschen


Extract the characters

String.toCharArray

Put them in a Set Find the intersection

Set.retainAll
like image 34
saugata Avatar answered Sep 17 '22 11:09

saugata