Profundidad de anidamiento del símbolo efectiva LeetCode # 1111

título Descripción

análisis

Traducción u1s1 de resolver realmente el problema abstracto. . . Aquí está mi punto de vista de los puntos:

  • Cadena eficaz soportes (Válido paréntesis Strings, más adelante abreviado como VPS) en los soportes delantero y trasero están adaptados, similar a la situación no se produce "())," ") (" similares;
  • El VPS seq, los requisitos se dividirá en dos sub-cadenas A, B, también tienen que ser el VPS;
  • profundidad profundidad VPS
    • carácter nulo, tales como "", la profundidad es 0;
    • Nested, tales como "(vps)", la profundidad interna de la profundidad vps + 1;
      Ejemplo: carácter nulo ""profundidad es 0, la (). Profundidad de 1, (())profundidad 2;
    • Conexión, tales como "vpsA vpsB", la profundidad y vpsB el valor máximo VPSA;
  • Preguntas hechas seqdos sub-cadenas A, B satisface \ (MAX (profundidad (A) , la profundidad (B)) \) Mínimo

VPS algunos depende de su profundidad de profundidad de anidamiento , y la profundidad D de algunos dividida en dos profundidades, respectivamente VPS subcadena DA y DB, habrá \ (D == DA + DB \) (y una razón muñeca?)
por lo tanto hace \ (MAX (profundidad (a) , la profundidad (B)) \) mínimo, teóricamente requerida \ (el DA = DB = \ frac. 1} {2} {D \) , el actual en el caso de D no necesariamente igualmente dividido en DA y DB, tanto lo más cerca posible dejar que un,
cada uno del código anidada a SEQ asignados alternativamente a las sub-cadenas a y B

Diseño de algoritmos

  • Contador counter, que no se ha utilizado para representar emparejado ")" a "(" Número
  • Bandera sgn, que se utiliza para indicar una próxima (que se asignará a la que subcadena

Ejecución del programa:

  • Cuando son compatibles con (:
    • Sgn se añade al resultado, un 0 indica que el (asignado a A, 1 B asignado al representante;
    • Si el siguiente cambio sgn-- o coincide (, entonces no ha sido uno anidado, a la (puntos B a la subcadena;
    • Se añade un inigualable antes de los paréntesis, counterllevar a cabo una auto-impuesta;
  • Cuando son compatibles con ):
    • Este bit )debe pertenecer a la subcadena y diferente SGN, por lo que se sgn^1puede añadir a provocar;
    • Un soporte delantero se corresponde, counterde decremento;
    • Si counter != 0, a continuación, la siguiente ()y que coinciden con el soporte acaba de terminar la relación de conexión, asignarlos a la misma sub-secuencia puede, por lo que cambiar el sgnvalor;

código C ++ para lograr:

class Solution {
public:
    vector<int> maxDepthAfterSplit(string seq) {
        vector<int> result;
        short counter = 0;
        int sgn = 0;
        for(int i = 0; i < seq.size(); i++){
            if(seq[i] == '('){
                result.push_back(sgn);
                sgn ^= 1;
                counter ++;
            }
            if(seq[i] == ')'){
                result.push_back(sgn ^ 1);
                counter --;
                if(counter != 0){
                    sgn ^= 1;
                }
            }
        }
        return result;
    }
};

Los resultados operativos

Supongo que te gusta

Origin www.cnblogs.com/Nreyab/p/12610657.html
Recomendado
Clasificación