LeetCode Note Java 00205:Isomorphic Strings

判斷輸入的兩個 String 是否是 Isomorphic (字母排序規律相同)。

題目

Isomorphic Strings Easy

Given two strings s and t, determine if they are isomorphic.

Two strings s and t are isomorphic if the characters in s can be replaced to get t.

All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character, but a character may map to itself.

我的解法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Solution {
public boolean isIsomorphic(String s, String t) {
if (s.length() != t.length()) {
return false;
}
char[] sca = s.toCharArray();
char[] tca = t.toCharArray();
HashMap<Character, Character> hm = new HashMap<>();
for (int i = 0; i < sca.length; i++) {
char sc = sca[i];
char tc = tca[i];
if (hm.containsKey(sc)) {
if (hm.get(sc) != tc ) {
return false;
}
} else if (hm.containsValue(tc)) {
return false;
} else {
hm.put(sc, tc);
}
}
return true;
}
}

步驟:

  1. 將 String 轉成 char array。

  2. 透過 HashMap 記住相同序列位置的 char。

  3. 迴圈依序比對 HashMap 中儲存的 key 與 value,若違反規則就不是 Isomorphic。

  4. 都沒違反規則才是 Isomorphic。

注意:

  • HashSet 只能用包裝過的基本型別。

重點物件或方法:

  • HashSet

檢討

看到很多人只使用 intArray 解題,但這種的我要想更久,先繼續練其他題,來增加眼界好了。

參考資料

Short Java solution without maps