Loading...
Loading...
Loading...

Catalog


925. 长按键入

计算机编程 Pub Time:2022/3/30/18:16 865 vk python 数据结构与算法 双指针 最近编辑于2 years, 9 months前 Target reading time:2min

本题来自力扣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

共有0条评论