I have been playing with code problems. Since I'm studying for Java 11 certification, I decided to resolve the Anagrams problem using streams. Here what I do is sort the two strings characters and then making a comparison.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class Anagrams { static boolean isAnagram(String a, String b) { return sortStringChars(a).equals(sortStringChars(b)); } static String sortStringChars(String str) { return str.toLowerCase().chars() .mapToObj(c -> ( char ) c) .sorted() .reduce( "" , (s,c) -> s.concat(String.valueOf(c)), String::concat); } public static void main(String[] args) { String a = "anagram" ; String b = "margana" ; boolean ret = isAnagram(a, b); System.out.println( (ret) ? "Yes, Anagrams!" : "Not Anagrams" ); } } |
No comments:
Post a Comment