859. Buddy Strings

Given two strings A and B of lowercase letters, return true if and only if we can swap two letters in A so that the result equals B.

Example 1:

Input: A = "ab", B = "ba"
Output: true

Example 2:

Input: A = "ab", B = "ab"
Output: false

Example 3:

Input: A = "aa", B = "aa"
Output: true

Example 4:

Input: A = "aaaaaaabc", B = "aaaaaaacb"
Output: true

Example 5:

Input: A = "", B = "aa"
Output: false

Note:

0 <= A.length <= 20000
0 <= B.length <= 20000
A and B consist only of lowercase letters.
class Solution:
    def buddyStrings(self, A, B):
        """
        :type A: str
        :type B: str
        :rtype: bool
        """
        if len(A)!=len(B):
            return False
        flag = 0
        a1,a2,b1,b2 = '','','',''
        for i in range(len(A)):
            if A[i]==B[i]:
                continue
            if flag==0:
                flag += 1
                a1,b1 = A[i],B[i]
                continue
            if flag == 1:
                flag += 1
                a2,b2 = A[i],B[i]
                continue
            return False
        if a1!=b2 or a2!=b1:
            return False
        if flag==0:
            if len(A)==len(set(A)):
                return False
        return True
posted @ 2019-01-08 18:11  bernieloveslife  阅读(126)  评论(0编辑  收藏  举报