题目:https://leetcode.com/problems/isomorphic-strings/
思路:
题目要求 s 到 t 不能同时 map 两个,t 到 s 也不可以。但两个映射是独立的。
第一次用两个HashMap做,第二次用一个HashMap 一个 HashSet ,HashSet 用来检测重复。两种方法耗时一样。
Code:
public boolean isIsomorphic(String s, String t) {
if(s.length() == 0 && t.length() == 0) return true;
if(s.length() != t.length()) return false;
HashMap<Character,Character> hm = new HashMap<Character,Character>();
HashSet<Character> hs = new HashSet<Character>();
for(int i=0;i<s.length();i++){
char sa = s.charAt(i);
char ta = t.charAt(i);
if(hm.containsKey(sa)){
if(hm.get(sa)!=ta) return false;
}else{
hm.put(sa,ta);
if(hs.contains(ta)) return false;
hs.add(ta);
}
}
return true;
}
备注: