public static boolean isIsomorphic(String s, String t) {
HashMap<Character, Character> res1 = new HashMap<Character, Character>();
HashMap<Character, Character> res2 = new HashMap<Character, Character>();
char[] sToArray = s.toCharArray();
char[] tToArray = t.toCharArray();
if (s == null && t == null)
return true;
if (s == null || t == null || s.length() != t.length())
return false;
for (int i = 0; i < sToArray.length; i++) {
***if ((!res1.containsKey(sToArray[i])) && (!res2.containsKey(tToArray[i])))*** {
res1.put(sToArray[i], tToArray[i]);
res2.put(tToArray[i], sToArray[i]);
} else {
if ((res1.get(sToArray[i]) != tToArray[i]) || (res2.get(tToArray[i]) != sToArray[i]))
return false;
}
}
return true;
}
給定兩個字符串s和t,確定它們是否是同構的。 當測試用例是「ab」「aa」時; ((!res1.containsKey(sToArray [i]))& &(!res2.containsKey(tToArray [i]))) 我檢查了res1不等於null,res2不等於( )將會出現nullpointerexception爲空。有人能說出原因嗎?非常感謝!爲什麼有空指針異常,但我已檢查沒有空
請顯示完整的堆棧跟蹤,最好是[mcve]。 –
可能不是你的異常的來源,但你在檢查它們爲null之前將's'和't'轉換爲char數組。你必須先進行檢查。 –
不相關,但您可能不想將這些'char []'與'=='和'!='進行比較。 –