题目链接:
力扣https://leetcode-cn.com/problems/buddy-strings/aaa
【分析】其实一共就三种情况:
(1)长度不相等直接false;
(2)字符串相同,只要出现重复字母即可true;
(3)字符串不相同,验证是否有两个字符不相同,且这两个字符交换后相同 。
class Solution:
def buddyStrings(self, s: str, goal: str) -> bool:
if len(s) != len(goal):
return False
if s == goal:
cnt = [0] * 26
for i in s:
if cnt[ord(i) - ord('a')] == 1:
return True
cnt[ord(i) - ord('a')] += 1
return False
else:
cnt = 0
letter = []
for i in range(len(s)):
if s[i] != goal[i]:
letter.append(s[i])
letter.append(goal[i])
cnt += 1
if cnt > 2:
return False
if cnt == 2:
if letter[0] == letter[3] and letter[1] == letter[2]:
return True
return False