# 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))