问题描述 给定两个仅由小写字母组成的字符串A和B,判断这两个字符串是否为伙伴字符串,如果是则输出True,否则输出False。 对于字符串A和B,如果能通过交换其中一个字符串中的任意两个不同位置的字符,使其与另一个字符串完全相等,则称这两个字符串为伙伴字符串。
测试样例
# Input: A = 'aaaaaaabc' B = 'aaaaaaacb' # Output: True # 可以将A中的b和c交换位置,使其与B完全相等。 # Input: A = 'aaaaaabbc' B = 'aaaaaaacb' # Output: False内容首发于微信公众号IT信息教室,更多AI相关的技能分享,请搜索关注或微信扫描下方二维码关注,感谢您的支持!!!
参考代码
#!/usr/bin/env python3 # -*- coding: utf-8 -*- class Solution: def buddyStrings(self, stringA, stringB): # 如果两个字符串长度不相等,则返回 False if len(stringA) != len(stringB): return False # 如果两个字符串相等,且字符串中包含相同的元素,则返回 True if stringA == stringB and len(stringA) > len(set(stringA)): return True diffA = [] diffB = [] # 如果两个字符串长度相同,但是其不相同的子字符数量大于2,则返回False for idx in range(len(stringA)): if len(diffA) > 2: return False if stringA[idx] != stringB[idx]: diffA.append(stringA[idx]) diffB.append(stringB[idx]) # 如果两个字符串长度相同,但是其不相同的子字符数量小于2,则返回False if len(diffA) == 1: return False # 如果两个字符串长度相同,其不相同的子字符数量等于2,且AB的子字符交叉相等,则返回True if( diffA[0], diffA[1]) == (diffB[1], diffB[0]): return True return False # Test Program print(Solution().buddyStrings('aaaaaaabc', 'aaaaaaacb')) # True print(Solution().buddyStrings('aaaaaabbc', 'aaaaaaacb')) # False