本文最后更新于:2023年3月19日 晚上
面试题 01.02. 判定是否互为字符重排
难度简单 20 收藏分享切换为英文接收动态反馈
给定两个字符串 s1
和 s2
,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
示例 1:
1 2
| 输入: s1 = "abc", s2 = "bca" 输出: true
|
示例 2:
1 2
| 输入: s1 = "abc", s2 = "bad" 输出: false
|
说明:
0 <= len(s1) <= 100
0 <= len(s2) <= 100
思路
哈希表
遍历一次统计字符加入哈希表,再遍历另外一个字符,删除响应的元素,最后剩下空对象则为重排字符
排序
比较排序后结果是否相同
解答
哈希表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
var CheckPermutation = function (s1, s2) { const obj = {}; for (const arr of s1) { if (obj[arr]) obj[arr] += 1; else obj[arr] = 1; } for (const arr of s2) { if (obj[arr] >= 1) obj[arr] -= 1; else return false; } return !Object.values(obj).filter((e) => e !== 0).length; };
|
排序
1 2 3 4 5 6 7 8
|
var CheckPermutation = function (s1, s2) { return s1.split("").sort().join("") === s2.split("").sort().join(""); };
|