def isValid(s):
pila=0
for i in s:
if i=='(':
pila+=1
elif i==')':
pila-=1
if pila<0:
return False
return pila==0
isValid('(()))')
Introducción
¿Ya tomaste el Curso Avanzado de Algoritmos: Patrones de Arrays y Strings?
Lista Enlazada
Estructura de datos: Lista Enlazada
Programando listas enlazadas con Java
Cómo Invertir una Lista Enlazada
Odd Even Linked List: análisis del problema
Solución de Odd Even Linked List
Playground: Odd Even Liked List
Programando Odd Even Linked List con C++
Linked List Cycle: análisis del problema
Solución de Linked List Cycle
Playground: Linked List Cycle
Programando Linked List Cycle con Python
Palindrome Linked List: análisis del problema
Solución de Palindrome Linked List
Playground: Palindrome Linked List
Programando Palindrome Linked List con Java
Reorder List: análisis del problema
Solución de Reorder List
Programando Reorder List con JavaScript
Playground: Reorder List Without Repeated Values
Reto: LRU Caché
Ejercicios recomendados de Lista Enlazada
Ejercicios resueltos de Lista Enlazada
Pilas y colas
Estructura de datos: Pilas y Colas
Paréntesis Válido: análisis del problema
Solución de Paréntesis Válido
Playground: Paréntesis Válido
Programando Paréntesis Válido con C++
Ejercicios recomendados de Pilas
Colas de prioridad
Estructura de datos: Colas de Prioridad
K Closest Points to Origin: análisis del problema
Solución de K Closest Points to Origin
Playground: K Closest Points to Origin
Programando K Closest Points to Origin con Python
Reorganize String: análisis del problema
Solución de Reorganize String
Playground: Reorganize String
Programando Reorganize String con Python
Ejercicios recomendados de Colas de prioridad
Ejercicios resueltos de Colas de prioridad
Próximos pasos
Toma el Curso Avanzado de Algoritmos: Grafos y Árboles
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Aportes 11
Preguntas 0
def isValid(s):
pila=0
for i in s:
if i=='(':
pila+=1
elif i==')':
pila-=1
if pila<0:
return False
return pila==0
isValid('(()))')
Implementado con stacks como Linked List, pero el complex en el espacio sigue O(n)
Y sin usar Linked List, el espacio O(1)
, pero si aumenta la complejidad del ejercicio si creeria que es mejor con stacks como Linked List:
Mi solucion en c++
#include <iostream>
#include <stack>
#include <string>
using namespace std;
bool esParentesisValido(string cadena)
{
stack<char> pila;
for (int i = 0; i < cadena.length(); i++)
{
if (cadena[i] == '(')
{
pila.push(cadena[i]);
}
else if (cadena[i] == ')')
{
if (pila.empty())
{
return false;
}
pila.pop();
}
}
return true;
}
int main()
{
string cadena = "())";
if (esParentesisValido(cadena))
{
cout << "La cadena es valida" << endl;
}
else
{
cout << "La cadena no es valida" << endl;
}
return 0;
}
Comparto mi solución en python usando complejidad espacial O(1)
.
.
.
.
.
.
.
.
def isValid(s):
num_open = 0
for i in range(len(s)):
if num_open <0:
return False
if s[i] == "(":
num_open +=1
elif s[i] == ")":
num_open -= 1
return num_open == 0
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?