Java aplicación LeetCode 678 cadena de soportes válidos (+ cambio violento en el pensamiento)

678. soportes de cadena eficaces

Dada una cadena que contiene sólo las tres clases de personajes, :() y *, escribir una función para comprobar si la cadena es una cadena válida. cadena válida tiene las siguientes reglas:

Cualquier paréntesis izquierdo (debe tener un paréntesis de cierre correspondiente).
Cualquier paréntesis derecho) debe tener un paréntesis de apertura correspondiente (.
Paréntesis izquierdo (debe ser antes del paréntesis de cierre correspondiente).

  • Se puede considerar como una sola paréntesis derecho), o un solo paréntesis izquierdo (o una cadena vacía.
    Una cadena vacía también se considera una cadena válida.
    Ejemplo 1:

De entrada: "()"
de salida: True
Ejemplo 2:

De entrada: "(*)"
Salida: True
Ejemplo 3:

Intro: "(*))"
Salida: True
NOTA:

El tamaño de la cadena está en el intervalo [1100].

class Solution {
   public boolean checkValidString(String s) {
       //两个表示的都是左括号,但是l是星号是右括号的时候
       //r是星号是左括号的时候
        int l = 0;
        int r = 0;
        int len = s.length();
        char[] str = s.toCharArray();
        for(int i=0; i<str.length; i++) {
            if (str[i] == '(') {
                l++;
                r++;
            } else if (str[i] == ')') {
                if (l>0) {
                    l--;
                }
                if (r>0) {
                    r--;
                } else {
                return false;
                }
            } else if (str[i] == '*') {
                if(l>0) l--;
                r++;
            }

        }
        return l<=0 && 0<= r;
    }
}
Liberadas 1729 artículos originales · ganado elogios 30000 + · vistas 3,56 millones +

Supongo que te gusta

Origin blog.csdn.net/a1439775520/article/details/105312494
Recomendado
Clasificación