Appearance
同构字符串 / isIsomorphic
题目描述
给定两个字符串 s 和 t ,判断它们是否是同构的。
如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。
每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。
不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。
Code
javascript
function isIsomorphic(s, t) {
const map = new Map();
const map1 = new Map();
for (let i = 0; i < s.length; i++) {
if (map.has(s[i])) {
if (map.get(s[i]) !== t[i]) {
return false;
}
} else {
map.set(s[i], t[i]);
if (map1.has(t[i])) {
return false;
} else {
// 添加到反向映射
map1.set(t[i], s[i]);
}
}
}
return true;
}
Test Cases
javascript
const { isIsomorphic } = require('../docs/algo/string/isIsomorphic');
describe('isIsomorphic', () => {
it('case1', () => {
expect(isIsomorphic('badc', 'baba')).toBeFalsy();
});
it('case2', () => {
expect(isIsomorphic('egg', 'add')).toBeTruthy();
});
it('case3', () => {
expect(isIsomorphic('paper', 'title')).toBeTruthy();
});
});