內(nèi)容
給定兩個(gè)字符串 s 和 t,判斷它們是否是同構(gòu)的瞻想。
如果 s 中的字符可以被替換得到 t 氯檐,那么這兩個(gè)字符串是同構(gòu)的。
所有出現(xiàn)的字符都必須用另一個(gè)字符替換谋逻,同時(shí)保留字符的順序呆馁。兩個(gè)字符不能映射到同一個(gè)字符上,但字符可以映射自己本身毁兆。
示例 1:
輸入: s = "egg", t = "add"
輸出: true
示例 2:
輸入: s = "foo", t = "bar"
輸出: false
示例 3:
輸入: s = "paper", t = "title"
輸出: true
說明:
你可以假設(shè) s 和 t 具有相同的長(zhǎng)度智哀。
思路
將s和t分別替換成以數(shù)字1開頭的組合,
規(guī)則:遇到第一個(gè)陌生字符荧恍,用1表示,并記錄到map中屯吊,以后再次遇到這個(gè)字符送巡,直接用map中記錄的值來表示
當(dāng)s,t都被替換成這種組合后,比較是否相同即可
代碼
/**
將s和t分別替換成以數(shù)字1開頭的組合盒卸,
規(guī)則:遇到第一個(gè)陌生字符骗爆,用1表示,并記錄到map中蔽介,以后再次遇到這個(gè)字符摘投,直接用map中記錄的值來表示
當(dāng)s,t都被替換成這種組合后,比較是否相同即可
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var isIsomorphic = function (s, t) {
var map = {};
var index = 1;
var result = '',
result2 = '';
for (var i of s) {
map[i] ? null : (map[i] = index, index++);
result += map[i]
}
map = {};
index = 1;
for (var i of t) {
map[i] ? null : (map[i] = index, index++);
result2 += map[i]
}
return result == result2;
};