LeetCode205——同構字串
阿新 • • 發佈:2021-02-05
1、使用HashMap
public static boolean isIsomorphic(String s, String t) {
if(s.length() != t.length()) return false;
//泛型必須是類型別,而不能是基本型別(包括基本型別的陣列)
HashMap<Character, Character> s_map = new HashMap<Character, Character>();
HashMap<Character, Character> t_map = new HashMap<Character, Character>();
int len = s.length();
for(int i=0; i<len; i++) {
char x=s.charAt(i), y=t.charAt(i);
if((s_map.containsKey(x) && s_map.get(x) != y) || (t_map.containsKey(y) && t_map.get(y) != x)) {
return false;
}
s_map.put(x, y) ;
t_map.put(y,x);
}
return true;
}
2、使用陣列
public static boolean isIsomorphic(String s, String t) {
//ASCII碼的範圍為0~127
int sm[] = new int[128];
int tm[] = new int[128];
char sc[] = s.toCharArray();
char tc[] = t.toCharArray();
for(int i=0; i<s.length (); i++){
if(sm[sc[i]] != tm[tc[i]])
return false;
sm[sc[i]] = tm[tc[i]] = i+1;
}
return true;
}
用陣列之後,時間快了很多,但是據我看他們的時間複雜度都是O(n),望高手指點!