面试题 01.02. 判定是否互为字符重排
作者:互联网
给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
示例 1:
输入: s1 = "abc", s2 = "bca"
输出: true
示例 2:
输入: s1 = "abc", s2 = "bad"
输出: false
说明:
0 <= len(s1) <= 100
0 <= len(s2) <= 100
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/check-permutation-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
/**
* @param {string} s1
* @param {string} s2
* @return {boolean}
*/
var CheckPermutation = function(s1, s2) {
// 方法1
function toMap(s) {
let map = new Map()
for(let i = 0; i < s.length; i++) {
map.set(s[i], (map.get(s[i]) || 0) + 1)
}
return map
}
function mapToObj(map) {
let obj= Object.create(null);
for (let[k,v] of map) {
obj[k] = v;
}
return obj;
}
function isSameObj(a, b) {
let aProps = Object.getOwnPropertyNames(a);
let bProps = Object.getOwnPropertyNames(b);
if (aProps.length !== bProps.length) {
return false;
}
for(let i = 0; i < aProps.length; i++) {
var propName = aProps[i];
var propA = a[propName];
var propB = b[propName];
if ( propA !== propB) {
return false;
}
}
return true
}
return isSameObj(mapToObj(toMap(s1)), mapToObj(toMap(s2)));
// 方法2
return s1.split('').sort().join('') === s2.split('').sort().join('')
};
标签:map,面试题,return,s2,s1,01.02,let,重排,aProps 来源: https://blog.csdn.net/qq_34629352/article/details/120682910