LeetCode: presione prolongadamente para ingresar

Descripción del Título

Su amigo está usando el teclado para ingresar su nombre. Ocasionalmente, al escribir el carácter c, es posible que la tecla se mantenga presionada y el carácter se ingrese una o más veces.

Verificará los caracteres ingresados ​​en el teclado. Si corresponde al nombre de su amigo (algunos caracteres pueden estar presionados durante mucho tiempo), devuelva Verdadero.

Ideas

  • El significado general de la pregunta es: determinar si hay ciertos caracteres en el nombre de entrada porque la mano sacude la entrada
  • El nombre del amigo es nombre y el nombre ingresado por el amigo se escribe
  • A través de charAt (), puede obtener el carácter del subíndice especificado en la cadena
  • name.charAt (i) representa los caracteres en name, typed.charAt (j) representa los caracteres en typed
  • Comparando desde el principio, situación ① Si name.charAt (i) == typed.charAt (j), entonces i y j son ambos ++ , comparando el siguiente carácter, que es equivalente a dos punteros
  • ② situación si no es igual, entonces es más typed.charAt (j) es igual a typed.charAt (J-1) , si son iguales, entonces vuelva a ingresar el temblor es, solo j ++ puede
  • Caso ③, ambos casos no se cumplen, esto muestra que el carácter actual no es un nombre de carácter que debe aparecer en el orden actual, ni es volver a ingresar el carácter para devolver falso a

Código

class Solution {
    public boolean isLongPressedName(String name, String typed) {
        int i=0;
        int j=0;
        while(j<typed.length()){
            if(i<name.length()&&name.charAt(i)==typed.charAt(j)){
                i++;
                j++;
            }else if(j>0&&typed.charAt(j)==typed.charAt(j-1)){
                j++;
            }else{
                return false;
            }
        }
        return i==name.length();
    }
}

 

Supongo que te gusta

Origin blog.csdn.net/weixin_43939602/article/details/114122927
Recomendado
Clasificación