859. 亲密字符串

给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true ;否则返回 false 。

示例 1:
输入: A = "ab", B = "ba"
输出: true

示例 2:
输入: A = "ab", B = "ab"
输出: false

示例 3:
输入: A = "aa", B = "aa"
输出: true

示例 4:
输入: A = "aaaaaaabc", B = "aaaaaaacb"
输出: true

示例 5:
输入: A = "", B = "aa"
输出: false

题解

/**
 * @param {string} A
 * @param {string} B
 * @return {boolean}
 */
var buddyStrings = function(A, B) {
    if(A.length!=B.length){
        return false
    }
    if(A==B&&[...new Set(A.split(''))].length!=A.length){
        return true
    }
    if(A.split('').sort().join('')!=B.split('').sort().join('')){
        return false
    }
    let num=0
    for(let i=0;i<A.length;i++){
        if(A[i]!=B[i]){
            num++
            if(num>2){
                return false
            }
        }
    }
    return num==2?true:false
};