📅  最后修改于: 2023-12-03 14:55:48.394000             🧑  作者: Mango
有一个常见的面试题是:给定两个字符串,判断它们是否可以通过插入最多一个字符使它们相等。这个问题其实是很简单的,只需要分三种情况考虑:
下面是一个 Python 的实现:
def can_insert_to_equal(s1: str, s2: str) -> bool:
if s1 == s2:
return True
if abs(len(s1) - len(s2)) > 1:
return False
if len(s1) > len(s2):
s1, s2 = s2, s1
for i in range(len(s1)):
if s1[i] != s2[i]:
if len(s1) == len(s2):
return s1[i+1:] == s2[i+1:]
else:
return s1[i:] == s2[i+1:]
return True
这个实现中,我们首先判断两个字符串是否相等。然后,如果它们长度相差大于1,直接返回 False。最后,我们遍历短字符串的每一个子串,和长字符串的对应位置进行比较。如果找到了不相等的位置,我们就可以判断是否可以通过插入一个字符使得两个字符串相等了。
这个实现的时间复杂度是 O(n),其中 n 是较短字符串的长度。