[Leetcode una pregunta diaria] 925. Mantenga presionado para ingresar (comparación de cadenas)

Enlace de la pregunta diaria de Leetcode
: 925. Mantenga presionado para ingresar la
idea de resolución de problemas: use dos punteros name_index y typed_index para recorrer dos cadenas respectivamente, divididas en las siguientes tres situaciones:

- 当前两个字符相同并且下一个字符也相同时,同时向后移动一个字符
- 当前两个字符相同并且下一个字符不相同时,typed_index 向后移动一个字符
- 其他情况则为False

Finalmente, juzgue si el tamaño de name_index y typed_index es consistente con la longitud de la cadena. Hay un pequeño truco, debido a que desea juzgar el siguiente carácter, puede agregar $ al final del carácter para evitar el desbordamiento del subíndice y juzgar el último carácter.
responder:

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

Supongo que te gusta

Origin blog.csdn.net/qq_37753409/article/details/109198780
Recomendado
Clasificación