- https://leetcode-cn.com/problems/buddy-strings/solution/onshi-jian-fu-za-du-chao-9294-by-libins-haza/
# 来源:力扣(LeetCode)
# 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。">字符串内容替换
# 将a中内容替换后,使之与b相同
# a = “hello world”
# b = “helloworld”
# newa = a.split(“ “)
# if “”.join(newa) == b:
# print(“”.join(newa))
# # 注意a 末尾最后两个字符与b不一样,需要将a中最后两个字符位置替换
# a = “hellowordl”
# b = “helloworld”
# lista = list(a)
# list_b = list(b)
# for i in range(len(list_a)):
# if list_a[i] == list_b[i]:
# print(i)
# else:
# print(list_a[i],”a—>b”,list_b[i])
# list_a[i] == list_b[i]
# print(“list_a”,list_a)
# # print(list_a)
# # print(list_b)
def buddy_strings(A, B):
if len(A) != len(B):
return False
diffa = [] # 分别存放两个字符串中不同的字母
diffb = []
cnt = 0 # 记录AB不相同字母的个数
for i in range(len(A)):
if A[i] != B[i]:
diffa.append(A[i])
diffb.append(B[i])
cnt += 1
if cnt > 2: # 超过两个不相同的字母,直接返回FALSE
return False
# 如果AB不相同的字母刚好等于2,再判断这两个字母是否相等
if cnt == 2 and diffa[0] == diffb[1] and diffa[1] == diffb[0]:
return True
if cnt == 0: # 如果输入AB完全相同,需要验证是否有重复的字母,一旦有就可以通过交换让其相等
dicts = {}
for a in A:
if a in dicts:
return True
dicts[a] = 1
return False
if “__name“ == “__main“:
a = “helloworld”
b = “helloworld”
buddy_strings(a,b)
# 作者:libins
# 链接:https://leetcode-cn.com/problems/buddy-strings/solution/onshi-jian-fu-za-du-chao-9294-by-libins-haza/
# 来源:力扣(LeetCode)
# 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。