-
Notifications
You must be signed in to change notification settings - Fork 41
/
solution.js
37 lines (36 loc) · 952 Bytes
/
solution.js
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
31
32
33
34
35
36
37
/**
* @param {string} A
* @param {string} B
* @return {boolean}
*/
var buddyStrings = function (A, B) {
if (A.length !== B.length) {
return false;
}
let count = 0;
let index1;
// 处理A B完全一致的情况,此时必须有重复的元素才能交换
const map = {};
let duplicate = false;
for (let i = 0; i < A.length; i++) {
if (A[i] !== B[i]) {
count++;
if (count === 1) {
index1 = i;
} else if (count === 2) {
if (A[i] !== B[index1] || A[index1] !== B[i]) {
return false;
}
} if (count === 3) {
return false;
}
} else {
if (map[A[i]] === undefined) {
map[A[i]] = true;
} else {
duplicate = true;
}
}
}
return count === 2 || (count === 0 && duplicate);
};