leetcode:同構字串
阿新 • • 發佈:2019-02-04
給定兩個字串 s 和 t,判斷它們是否是同構的。
如果 s 中的字元可以被替換最終變成 t ,則兩個字串是同構的。
所有出現的字元都必須用另一個字元替換,同時保留字元的順序。兩個字元不能對映到同一個字元上,但字元可以對映自己本身。
思路:通過對映解決
s2t:s到t的對映
t2s:t到s的對映
如果s和t同構,那麼s通過s2t找到t,t通過t2s找到s;
public static boolean isIsomorphic(String s, String t) {
if(s == null || t == null){
return false ;
}
if(s.equals(t)){
return true;
}
if(s.length() != t.length() || t.length() >= 320339960){
return false;
}
char [] sArr = s.toCharArray();
char [] tArr = t.toCharArray();
Map<Character, Character> s2tMap = new HashMap<Character, Character>();
Map<Character, Character> t2sMap = new HashMap<Character, Character>();
for(int i = 0; i < s.length(); i ++){
if(s2tMap.get(sArr[i]) == null){
s2tMap.put(sArr[i], tArr[i]);
}
if(t2sMap.get (tArr[i]) == null){
t2sMap.put(tArr[i], sArr[i]);
}
if(t2sMap.get(tArr[i]) != sArr[i] || s2tMap.get(sArr[i]) != tArr[i]){
return false;
}
}
return true;
}