# 859.亲密字符串

# 859.亲密字符串
# 给定的两有小写字符组成的字符串A和B,只要我们可以交换A洪的2个字母得到与B相同的结果,就返回True;否则返回False。
def buddyStrs(A,B):
    if len(A) != len(B):
        return False
    #设置双指针滑动比较
    i,j = 0,0
    count = 0
    Hash = {}
    CharA = []
    CharB = []
    #字符串的比较
    while i < len(A) and j < len(B):
        if A[i] != B[j]:
            count += 1
            CharA.append(A[i])
            CharB.append(B[j])
            # AB至少有2个字符串不相同,交换后仍不相等,返回False
            if count > 2:
                return False
        i += 1
        j += 1
    # AB只有1个字符串不相同,交换后仍不相等,返回False
    if count == 1:
        return False
    # AB只有2个字符串不相同
    if count == 2:
        if CharA[0] == CharB[1] and CharA[1] ==CharB[0]:
            return True
    # A=B,判断A里面是否有重复的字符串,有则返回T,否则返回F
    if count == 0:
        # A去重后,长度小于A,则表示A里面有重复字符串,返回T;否则则无重复字符串,返回F
        if len(set(A)) < len(A):
            return True
        return False


if __name__=="__main__":
    a = "aaaaaabc"
    b = "aaaaaacb"
    c = "abab"
    d = "abab"
    print(buddyStrs(a,b))
    print(buddyStrs(c, d))
原文地址:https://www.cnblogs.com/ff-gaofeng/p/13884632.html