亲密字符串
题目:
给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true ;否则返回 false 。
示例 1:
1 2
   | 输入: A = "ab", B = "ba" 输出: true
   | 
 
示例 2:
1 2
   | 输入: A = "ab", B = "ab" 输出: false
   | 
 
示例 3:
1 2
   | 输入: A = "aa", B = "aa" 输出: true
   | 
 
示例 4:
1 2
   | 输入: A = "aaaaaaabc", B = "aaaaaaacb" 输出: true
   | 
 
示例 5:
1 2
   | 输入: A = "", B = "aa" 输出: false
   | 
 
提示:
0 <= A.length <= 20000 
0 <= B.length <= 20000 
A 和 B 仅由小写字母构成。 
解题思路:
// 1 length 判断
 // 2 遍历,用两个数组:记录两个数组不同的 a,b,是否等于两个且首尾交换可以相等
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
   | 
 
 
 
  var buddyStrings = function(A, B) {         if (A.length !== B.length) return false   let diffA = ''   let diffB = ''   let i = 0   while (i < A.length) {     if (A[i] !== B[i]) {       diffA += A[i]       diffB += B[i]     }     i++   }   if (diffA === '') {     let temp = A.split("").sort()     for (let i = 0; i< temp.length -1  ; i++) {       if (temp[i] ===temp[i+1]) return true     }     return false   }   if (diffA.length !== 2 || diffB.length !== 2) return false   if (diffA[0] === diffB[1] && diffA[1] === diffB[0]) return true   return false }
 
  | 
 
PS: 有可能遗漏的点是,当 A 与 B 完全一样的时候,需要判断 A/B 里面是否有重复的字母;判断的时候可以用一个 hash 会更快