Nesting LeetCode profundidad 1111. paréntesis eficaces (paridad separado)

1. Tema

Soporte solamente por cadena válida "("y ")"configurado, y de acuerdo con una de varias de las siguientes condiciones:

  • cadena nula
  • La conexión puede ser referido como AB (A y B están conectados), en donde A y B son soportes de cadena válida
  • Anidación, se puede escribir como (A), donde A es una cadena válida soportes

Del mismo modo, podemos definir la profundidad efectiva de anidación profundidad soportes de cadena s (S):

  • s es vacía,depth("") = 0
  • Cuando está conectado a s A y B, depth(A + B) = max(depth(A), depth(B))donde A y B son los soportes de cadena válida
  • s es anidado de casos depth("(" + A + ")") = 1 + depth(A)en los que A es un válido soportes de cadena
    ejemplo: "","()()",和 "()(()())"son soportes de cadena válida, respectivamente, 0,1,2 profundidad de anidamiento, y ")(" 和 "(()"no es eficaz en cadena paréntesis.

Para darle una SEC soporte de cadena válida, dividiéndolo en dos sub-secuencias disjuntos A y B, y A y B Satisfacer los soportes definen una cadena de caracteres válidos (nota: a.length + B.length = seq.length).

Ahora, usted tiene que elegir el arbitrario conjunto de cadenas válidas soportes A y B, hacen max(depth(A), depth(B))posible el valor del mínimo .

Devuelve la longitud de seq.lengthla matriz de respuesta answer, selecciona una o B regla de codificación es: si SEQ [i] es la parte A, entonces la respuesta [i] = 0. De lo contrario, la respuesta [i] = 1.
Incluso si hay varias respuestas existen para cumplir con los requisitos, también es necesario un cambio.

示例 1:
输入:seq = "(()())"
输出:[0,1,1,1,1,0]

示例 2:
输入:seq = "()(())()"
输出:[0,0,0,1,1,0,1,1]
 
提示:
1 <= text.size <= 10000

Fuente: Botón de estancia (LeetCode)
enlace: https: //leetcode-cn.com/problems/maximum-nesting-depth-of-two-valid-parentheses-strings
con derechos de autor por deducción de todas las redes. reimpresión comercial póngase en contacto con la reimpresión autorizada oficial, no comercial por favor indique la fuente.

2. Resolución de Problemas

  • Título media, tanto como sea posible para que un mínimo de dos soportes abiertos máxima profundidad de anidamiento
  • Entonces, de acuerdo a la profundidad en las capas impares, las capas pares, respectivamente, en la línea

Aquí Insertar imagen Descripción

class Solution {
public:
    vector<int> maxDepthAfterSplit(string seq) {
    	int i, j = 0, depth = 0;
    	vector<int> ans(seq.size(),0);
        char prev = '*';
    	for(i = 0; i < seq.size(); ++i,++j)
    	{
            if(prev == ')')
                depth--;
    		if(seq[i] == '(')
    			depth++;
    		if(depth & 1)//奇数层
                ans[j] = 1;
            prev = seq[i];
            // cout << depth << " ";
    	}
    	return ans;
    }
};

Aquí Insertar imagen Descripción

Publicados 796 artículos originales · ganado elogios 1351 · Vistas de 340.000 +

Supongo que te gusta

Origin blog.csdn.net/qq_21201267/article/details/105243722
Recomendado
Clasificación