「每日LeetCode」2022年10月18日

本文最后更新于:2023年3月19日 晚上

205.同构字符串

205.同构字符串

Category Difficulty Likes Dislikes
algorithms Easy (49.93%) 428 -

Tags
Companies
给定两个字符串 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 字符组成

Discussion | Solution
Code Now

思路

每个字符重新对应一个字符,生成后比较即可,中间要用特殊字符隔断开

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
* @lc app=leetcode.cn id=205 lang=javascript
*
* [205] 同构字符串
*/

// @lc code=start
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var isIsomorphic = function (s, t) {
const space = "$";
const transform = (str) => {
let cur = 0;
const map = {};
let res = "";
for (const char of str) {
if (!map[char]) map[char] = String.fromCharCode(97 + cur++);
res += `${map[char]}${space}`;
}
return res;
};
return transform(s) === transform(t);
};
// @lc code=end