Long Pressed Name

Your friend is typing hisname into a keyboard. Sometimes, when typing a characterc, the key might getlong pressed, and the character will be typed 1 or more times.

You examine thetyped characters of the keyboard. ReturnTrueif it is possible that it was your friends name, with some characters (possibly none) being long pressed.

Example 1:

Input: 
name = 
"alex"
, typed = 
"aaleex"
Output: 
true
Explanation: 
'a' and 'e' in 'alex' were long pressed.

Example 2:

Input: 
name = 
"saeed"
, typed = 
"ssaaedd"
Output: 
false
Explanation: 
'e' must have been pressed twice, but it wasn't in the typed output.

Example 3:

Input: 
name = 
"leelee"
, typed = 
"lleeelee"
Output: 
true

Example 4:

Input: 
name = 
"laiden"
, typed = 
"laiden"
Output: 
true
Explanation: 
It's not necessary to long press any character.

Note:

name.length <= 1000
typed.length <= 1000
The characters of name and typed are lowercase letters.

分析

source和target一起走

本题因为是重复字母,所以可以提前return 如果既!=source 又不是duplicate a[i]!=a[j-1]

class Solution:
    def isLongPressedName(self, name: str, typed: str) -> bool:
        p=q = 0
        lp = len(name)
        lq = len(typed)
        while p < lp and q < lq:
            if name[p] == typed[q]:
                p +=1
                q +=1
            elif q ==0 or typed[q]!=typed[q-1]:#加这个会快很多,也可以不加
                return False
            else:
                q += 1
        if p == lp:
            return True
        return False

Last updated