一、題目大意
給定兩個字串 s 和 t ,判斷它們是否是同構的,
如果 s 中的字符可以按某種映射關系替換得到 t ,那么這兩個字串是同構的,
每個出現的字符都應當映射到另一個字符,同時不改變字符的順序,不同字符不能映射到同一個字符上,相同字符只能映射到同一個字符上,字符可以映射到自己本身,
示例 1:
輸入:s = "egg", t = "add"
輸出:true
示例 2:
輸入:s = "foo", t = "bar"
輸出:false
示例 3:
輸入:s = "paper", t = "title"
輸出:true
提示:
- 1 <= s.length <= 5 * 104
- t.length == s.length
- s 和 t 由任意有效的 ASCII 字符組成
來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/isomorphic-strings
著作權歸領扣網路所有,商業轉載請聯系官方授權,非商業轉載請注明出處,
二、解題思路
我們可以記錄兩個字串每個位置的字符第一次出現的位置,如果兩個字串中相同位置的字符與它們第一次出現的位置一樣,那么這兩個字串同構,例如:paper和title,當我們現在遍歷到第三個字符p和t,發現它們第一次出現的位置都在第一個字符,說明目前位置滿足同構,
三、解題方法
3.1 Java實作
public class Solution {
public boolean isIsomorphic(String s, String t) {
int[] sFirstIndex = new int[256];
int[] tFirstIndex = new int[256];
for (int i = 0; i < s.length(); i++) {
if (sFirstIndex[s.charAt(i)] != tFirstIndex[t.charAt(i)]) {
return false;
}
sFirstIndex[s.charAt(i)] = i + 1;
tFirstIndex[t.charAt(i)] = i + 1;
}
return true;
}
}
四、總結小記
- 2022/8/26 在汽車上刷的題
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/502843.html
標籤:其他
上一篇:動態規劃 --- 摘花生
