# 1790 Check if One String Swap Can Make Strings Equal

You are given two strings `s1` and `s2` of equal length. A string swap is an operation where you choose two indices in a string (not necessarily different) and swap the characters at these indices.

Return `true` if it is possible to make both strings equal by performing at most one string swap on exactly one of the strings. Otherwise, return `false`.

Example 1:

``````Input: s1 = "bank", s2 = "kanb"
Output: true
Explanation: For example, swap the first character with the last character
of s2 to make "bank".
``````

Example 2:

``````Input: s1 = "attack", s2 = "defend"
Output: false
Explanation: It is impossible to make them equal with one string swap.
``````

Example 3:

``````Input: s1 = "kelb", s2 = "kelb"
Output: true
Explanation: The two strings are already equal,
so no string swap operation is required.
``````

Constraints:

• `1 <= s1.length, s2.length <= 100`
• `s1.length == s2.length`
• `s1` and `s2` consist of only lowercase English letters.
 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 `````` ``````class Solution: def areAlmostEqual(self, s1: str, s2: str) -> bool: if len(s1) != len(s2): return False first_diff_idx, second_diff_idx = -1, -1 for i in range(len(s1)): c1, c2 = s1[i], s2[i] if c1 != c2: if first_diff_idx == -1: first_diff_idx = i elif second_diff_idx == -1: second_diff_idx = i else: return False return ( s1[first_diff_idx] == s2[second_diff_idx] and s1[second_diff_idx] == s2[first_diff_idx] )``````