本题来自力扣925. 长按键入。难度:简单

快慢指针
判断条件是啥呢?
name='alex' ,typed='aaleex'
两个指针分别指向name,和typed,只有两种情况,name[i]==typed[j]
如果相等,i+=1,j+=1,i和j都右移
此时i指向name中的l ,j指向第二个a
下一次循环
name[i]与typed[j]不相等,但是typed[j]==typed[j-1]
typed[j]和前一位相等,所以说明此时出现重复元素了,j右移
这时候i依旧指向name中的L,j指向typed中的L,假设此时j指向的位置不是L,而且也和前一个元素不相等
那么说明typed中出现了和name不一样的单词,或者是tyepd中的单词顺序和name中不一样了,
直接返回false
class Solution:
def isLongPressedName(self, name: str, typed: str) -> bool:
i,j=0,0
while j<len(typed):
if i<len(name) and typed[j]==name[i]:
i+=1
j+=1
elif j>0 and typed[j]==typed[j-1]:
j+=1
else:
return False
return True
此时其实还有一个bug,比如:name='abc',typed='ab'
这个程序也会返回True,显然这是不符合题意的,还需要再加上判断看i是否走完了全部的name的长度
if i==len(name):
return True
else:
return False
单词数:70字符数:870