1.同构字符串
解法
1.哈希表
思路
- 使用两张hash表存储两字符串之间的对应关系,s1表和t1表,在在for循环中遍历,如果出现当前元素已经存在并且该元素的映射不为hash表中所记录的对应映射关系(两表需要相互映射),就说明不能构成同构字符串
- 这里需要用到
对象的动态属性进行判断,另外使用x和y保存当前遍历数组元素的值,将s1[x] = y和t1[y] = x进行赋值操作,那么二者互相就拥有映射关系了。之后如果在循环中再次找到s1[x]属性并且该属性对应的映射不为y的话,则字符串不能同构
var isIsomorphic = function(s, t) {
let s1 = {}
let t1 = {}
let n = s.length
for(let i = 0; i < n; i++) {
const x = s[i], y = t[i]
if(s1[x] && s1[x] != y || t1[y] && t1[y] != x) return false
s1[x] = y
t1[y] = x
}
return true
};