leetcode859. 亲密字符串

题目地址

https://leetcode.com/problems/buddy-strings

Code

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
38
39
40
41
42
43
function buddyStrings(string $a, string $b) :bool {
$aLength = strlen($a);
$bLength = strlen($b);

if ($aLength != $bLength) {
return false;
}

if ($aLength < 2) {
return false;
}

$canChange = false;
$hashMap = [];
$diff = 0;
$indexOne = -1;
$indexTwo = -1;

for ($i = 0; $i < $aLength; $i++) {
if (isset($hashMap[$a[$i]])) {
++$hashMap[$a[$i]];
} else {
$hashMap[$a[$i]] = 1;
}

if ($hashMap[$a[$i]] >= 2) {
$canChange = true;
}

if ($a[$i] != $b[$i]) {
$diff++;

if ($indexOne == -1) {
$indexOne = $i;
} elseif ($indexTwo == -1) {
$indexTwo = $i;
}
}
}

return ($diff == 0 && $canChange)
|| ($diff == 2 && $a[$indexOne] == $b[$indexTwo] && $a[$indexTwo] == $b[$indexOne]);
}