# 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]) # A\B至少有2个字符串不相同,交换后仍不相等,返回False if count > 2: return False i += 1 j += 1 # A\B只有1个字符串不相同,交换后仍不相等,返回False if count == 1: return False # A\B只有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))