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;
- carácter nulo, tales como
- Preguntas hechas
seq
dos 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,
counter
llevar a cabo una auto-impuesta;
- Sgn se añade al resultado, un 0 indica que el
- Cuando son compatibles con
)
:- Este bit
)
debe pertenecer a la subcadena y diferente SGN, por lo que sesgn^1
puede añadir a provocar; - Un soporte delantero se corresponde,
counter
de 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 elsgn
valor;
- Este bit
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;
}
};