1. 程式人生 > >leetcode:同構字串

leetcode:同構字串

給定兩個字串 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; }