blob: a87815fd244c70637444b94fb4fd2d52135babd6 (
plain)
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
|
import sys
import regex
from itertools import batched
def buddy_strings(string1: str, string2: str) -> bool:
if len(string1) != len(string2):
return False
swaps = 0
pair_exists: bool = False
previous_character1: str
previous_character2: str
for i in range(len(string1)):
character1: str = string1[i]
character2: str = string2[i]
if swaps == 1:
# second character of swap
if previous_character2 != character1 or character2 != previous_character1:
return False
swaps = 2
elif string1[i] != string2[i]:
# starting the first swap
if swaps > 0:
return False
previous_character1 = character1
previous_character2 = character2
swaps = 1
pair_exists = pair_exists or i > 0 and string1[i-1] == string1[i]
return pair_exists and swaps == 0 or swaps == 2
def main() -> None:
inputs: list[str] = sys.argv[1:]
for string1, string2 in batched(inputs, 2):
print(f'{string1:<30}\n{string2:<30}\n -> {"yes" if buddy_strings(string1, string2) else "no"}')
if __name__ == '__main__':
main()
|