Description
Your friend is typing his name into a keyboard. Sometimes, when typing a character c, the key might get long pressed, and the character will be typed 1 or more times.
You examine the typed characters of the keyboard. Return True if 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.
Constraints:
- 1 <= name.length <= 1000
- 1 <= typed.length <= 1000
- The characters of name and typed are lowercase letters.
分析
题目的意思是:这道题判断Typed是否是字符串的name长按的字符串。这道题我一开始用了双指针,发现总是ac不全。看了答案后,发现是跳出循环后,忘了对typed字符串剩余的字符做重复性判断,如果是重复则为False。字符串总是出bug啊,看来还是需要严谨。
代码
class Solution:
def isLongPressedName(self, name: str, typed: str) -> bool:
i=0
n=len(typed)
m=len(name)
j=0
while(i<n and j<m):
if(typed[i]==name[j]):
i+=1
j+=1
elif(i>0 and typed[i]==typed[i-1]):
i+=1
else:
return False
if(j!=m):
return False
else:
while(i<n):
if(typed[i]!=typed[i-1]):
return False
i+=1
return True