Skip to content

Instantly share code, notes, and snippets.

@mgarod
Created November 13, 2016 23:47
Show Gist options
  • Save mgarod/ec761956525438a59d407e154a6ca6fd to your computer and use it in GitHub Desktop.
Save mgarod/ec761956525438a59d407e154a6ca6fd to your computer and use it in GitHub Desktop.
import java.io.*;
import java.util.*;
public class Solution {
private static boolean isAnagram(String a, String b) {
char[] a_arr = a.toCharArray();
char[] b_arr = b.toCharArray();
Arrays.sort(a_arr);
Arrays.sort(b_arr);
String sorted_a = new String(a_arr);
String sorted_b = new String(b_arr);
return a.equals(b);
}
private static void computeAnagramDistance(String a, String b) {
if (a.length() != b.length()) {
System.out.println(-1);
return;
} else if (isAnagram(a, b)) {
System.out.println(0);
return;
}
HashMap<Character, Integer> a_map = new HashMap<>();
for (Character c : a.toCharArray()) {
if (a_map.containsKey(c)) {
a_map.put(c, a_map.get(c) + 1);
} else {
a_map.put(c, 1);
}
}
for (Character c : b.toCharArray()) {
if (a_map.containsKey(c)) {
a_map.put(c, a_map.get(c) - 1);
} else {
a_map.put(c, -1);
}
}
Integer answer = 0;
for (Integer i : a_map.values()) {
if (i != 0) {
answer += Math.abs(i);
}
}
System.out.println(answer/2);
}
public static void main(String args[] ) throws Exception {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
Scanner cin = new Scanner(System.in);
int lines = cin.nextInt();
while (lines > 0) {
String a_concat_b = cin.next();
String a = a_concat_b.substring(0, (a_concat_b.length())/2);
String b = a_concat_b.substring((a_concat_b.length())/2);
computeAnagramDistance(a, b);
lines -= 1;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment