# 给你长度相等的两个字符串 s1 和 s2 。一次 字符串交换 操作的步骤如下:选出某个字符串中的两个下标(不必不同),并交换这两个下标所对应的字符。
# 如果对 其中一个字符串 执行 最多一次字符串交换 就可以使两个字符串相等,返回 true ;否则,返回 false 。
class Solution:
def areAlmostEqual(self, s1: str, s2: str) -> bool:
# 排除掉特殊情况
if (s1 == s2):
return True
if (len(s1) != len(s2)):
return False
# 找到不相等的字符
strLen = len(s1)
index = []
for i in range(0, strLen):
if (s1[i] == s2[i]):
continue
index.append(i)
if len(index) > 2:
return False
# 比较两个下标字符
if len(index) != 2:
return False
if (s1[index[0]] == s2[index[1]]
and s1[index[1]] == s2[index[0]]):
return True
return False
# 测试
obj = Solution()
print(obj.areAlmostEqual("aa", "ac"))
print(obj.areAlmostEqual("svyse", "yvsse"))
print(obj.areAlmostEqual("az", "zd"))
print(obj.areAlmostEqual("abcdefg", "abcdfeg"))
print(obj.areAlmostEqual("abcdefg", "defgabc"))
print(obj.areAlmostEqual("abcdefg", "gbcdefa"))
print(obj.areAlmostEqual("gasitigykqhrtnypjbeqwwsngclzr",
"gasitigykqhrtnypjbeqwwsngczlr"))
Leetcode.1790.仅执行一次字符串交换能否使两个字符串相等
最新推荐文章于 2024-08-30 10:38:03 发布