查詢表類演算法//同構字串
阿新 • • 發佈:2018-11-11
給定兩個字串 s 和 t,判斷它們是否是同構的。
如果 s 中的字元可以被替換得到 t ,那麼這兩個字串是同構的。
所有出現的字元都必須用另一個字元替換,同時保留字元的順序。兩個字元不能對映到同一個字元上,但字元可以對映自己本身。
示例 1:
輸入: s ="egg",
t ="add"
輸出: true
示例 2:
輸入: s ="foo",
t ="bar"
輸出: false
示例 3:
輸入: s ="paper",
t ="title"
輸出: true
說明:
你可以假設 s 和 t 具有相同的長度。
public boolean isIsomorphic(String s, String t) { if(s==null || s.length()<=1) return true; HashMap<Character,Character> hm=new HashMap<Character,Character>(); for(int i=0;i<s.length();i++){ char ch1=s.charAt(i); char ch2=t.charAt(i); if(hm.containsKey(ch1)){ if(hm.get(ch1)==ch2) continue; else return false; }else{ if(hm.containsValue(ch2)) return false; else hm.put(ch1, ch2); } } return true; }
class Solution { public boolean isIsomorphic(String s, String t) { Map<Character,Character> mapa = new HashMap<Character,Character>(); for(int i=0;i<t.length();i++){ if(mapa.containsKey(s.charAt(i))){ if(mapa.get(s.charAt(i))!=t.charAt(i)) return false; }else{ if(mapa.containsValue(t.charAt(i))) return false; else mapa.put(s.charAt(i),t.charAt(i)); } } return true; } }