今日题目

https://leetcode.com/problems/check-if-one-string-swap-can-make-strings-equal/description

思路

按题意模拟即可。

解题方法

按题意模拟即可。

  1. 检查两个字符串中不同位置的数量是否为 0 或恰好为 2。
  2. 检查交换这两个位置的字符后是否能使字符串相等。

复杂度

  • 时间复杂度:$O(N)$,N 为字符串的长度。

  • 空间复杂度:$O(1)$。

代码

class Solution:
    def areAlmostEqual(self, s1: str, s2: str) -> bool:
        fst = -1
        sec = -1

        for i in range(len(s1)):
            if s1[i] != s2[i]:
                if fst == -1:
                    fst = i
                elif sec == -1:
                    sec = i
                else:
                    return False
        
        if fst == -1 and sec == -1:
            return True
        
        if fst == -1 or sec == -1:
            return False
        
        if s1[fst] == s2[sec] and s1[sec] == s2[fst]:
            return True
        
        return False

image.png