Also wenn ich freqMap1.values () und freqMap2.values () überprüfen, haben die gleichen Werte, aber wenn ich es mit .equals überprüfe, gibt es false zurück. Ich bin ratlos, wie dieses Problem zu beheben:. Equal funktioniert nicht für die Liste der Liste, auch wenn sie gleich sind
/**
* Created by mona on 5/26/16.
*/
import java.util.*;
public class IsomorphicStrings {
//the words "abca" and "zbxz" are isomorphic
public static boolean areIsomorphic(String s1, String s2) {
Map<Character, ArrayList<Integer>> freqMap1 = new LinkedHashMap<>();
Map<Character, ArrayList<Integer>> freqMap2 = new LinkedHashMap<>();
for (int i=0; i<s1.length(); i++) {
if (freqMap1.containsKey(s1.charAt(i))) {
freqMap1.get(s1.charAt(i)).add(i);
} else {
freqMap1.put(s1.charAt(i), new ArrayList<>(Arrays.asList(i)));
}
}
for (int i=0; i<s2.length(); i++) {
if (freqMap2.containsKey(s2.charAt(i))) {
freqMap2.get(s2.charAt(i)).add(i);
} else {
freqMap2.put(s2.charAt(i), new ArrayList<>(Arrays.asList(i)));
}
}
System.out.println(freqMap1.values());
System.out.println(freqMap2.values());
return freqMap1.values().equals(freqMap2.values());
}
public static void main(String[] args) {
String s1="foo";
String s2="app";
System.out.println(areIsomorphic(s1, s2));
}
}
Dies ist die Ausgabe I aus Druck erhalten:
[[0], [1, 2]]
[[0], [1, 2]]
false
Mona, können Sie Ihr Vergnügen finden Sie [hier] (http://stackoverflow.com/questions/2674021/how-to-compare-two-maps-by-their-values) –