其他分享
首页 > 其他分享> > 面试题 01.02. 判定是否互为字符重排

面试题 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