leetcode
字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。
-
三种情况讨论:
替换:字符串长度不变,考虑内部不相等的个数是否超过两个
删除/插入:只变化一个字符,跳过该字符,比较剩下是否相等
两个字符串长度差超过2,不符合 -
双指针,分别从长字符的首端开始扫描至不相等处,另一个从尾端扫描,比较两个指针位置差值
class Solution:
def oneEditAway(self, first: str, second: str) -> bool:
if abs(len(first)-len(second))>1:
return False
if len(first)<len(second):
first,second = second,first
i,j,k = 0, len(first)-1,len(second)-1
while i<len(second) and first[i]==second[i]:
i+=1
while k>=0 and first[j]==second[k]:
j-=1
k-=1
return j-i<1 and k-i<1