Leetcode每日一题
题目链接: 925. 长按键入
解题思路: 使用两个指针name_index 和 typed_index 分别对两个字符串进行遍历,分为以下三种情况:
- 当前两个字符相同并且下一个字符也相同时,同时向后移动一个字符
- 当前两个字符相同并且下一个字符不相同时,typed_index 向后移动一个字符
- 其他情况则为False
最后判断name_index 和 typed_index 是否的大小是否和字符串长度一致即可。有一个小trick,因为要判断下一个字符,可以在字符最后面加上 $ 防止下标溢出和最后的字符判断。
题解:
class Solution:
def isLongPressedName(self, name: str, typed: str) -> bool:
if len(name) == 0:
return True
if len(typed) == 0:
return False
name += "$"
typed += "$"
len_name = len(name) - 1
len_typed = len(typed) - 1
name_index, typed_index = 0, 0
while name_index < len_name and typed_index < len_typed:
if (name[name_index] == typed[typed_index]) and (name[name_index + 1] == typed[typed_index + 1]):
typed_index += 1
name_index += 1
elif (name[name_index] == typed[typed_index]) and (name[name_index + 1] != typed[typed_index + 1]):
typed_index += 1
else:
break
# print(name_index, typed_index)
return name_index == len_name and typed_index == len_typed