给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。

示例 1:

输入: s1 = "abc", s2 = "bca"

输出: true 

示例 2:

输入: s1 = "abc", s2 = "bad"

输出: false

说明:

0 <= len(s1) <= 100

0 <= len(s2) <= 100

/**
* @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('')
};