給你長度相等的兩個字符串 s1 和 s2 。一次字符串交換操作的步驟如下:選出某個字符串中的兩個下標(不必不同),並交換這兩個下標所對應的字符。
如果對其中一個字符串執行最多一次字符串交換就可以使兩個字符串相等,返回 true ;否則,返回 false 。
輸入:s1 = “bank”, s2 = “kanb”
輸出:true
解釋:例如,交換 s2 中的第一個和最後一個字符可以得到 “bank”
輸入:s1 = “attack”, s2 = “defend”
輸出:false
解釋:一次字符串交換無法使兩個字符串相等
輸入:s1 = “kelb”, s2 = “kelb”
輸出:true
解釋:兩個字符串已經相等,所以不需要進行字符串交換
輸入:s1 = “abcd”, s2 = “dcba”
輸出:false
1 <= s1.length, s2.length <= 100
s1.length == s2.length
s1 和 s2 僅由小寫英文字母組成
class Solution:
def areAlmostEqual(self, s1: str, s2: str) -> bool:
if s1 == s2:
return True
ans1 = 0
ans2 = []
ans3 = []
for i in range(len(s1)):
if s1[i] != s2[i]:
ans1 += 1
ans2.append(s1[i])
ans3.append(s2[i])
if ans1 == 3:
return False
if ans1 == 2:
if ans2[0] in ans3 and ans2[1] in ans3:
return True
return False