Introducción

1

¿Ya tomaste el Curso Avanzado de Algoritmos: Patrones de Arrays y Strings?

Lista Enlazada

2

Estructura de datos: Lista Enlazada

3

Programando listas enlazadas con Java

4

Cómo Invertir una Lista Enlazada

5

Odd Even Linked List: análisis del problema

6

Solución de Odd Even Linked List

7

Playground: Odd Even Liked List

8

Programando Odd Even Linked List con C++

9

Linked List Cycle: análisis del problema

10

Solución de Linked List Cycle

11

Playground: Linked List Cycle

12

Programando Linked List Cycle con Python

13

Palindrome Linked List: análisis del problema

14

Solución de Palindrome Linked List

15

Playground: Palindrome Linked List

16

Programando Palindrome Linked List con Java

17

Reorder List: análisis del problema

18

Solución de Reorder List

19

Programando Reorder List con JavaScript

20

Playground: Reorder List Without Repeated Values

21

Reto: LRU Caché

22

Ejercicios Prácticos con Listas Enlazadas y Historial de Navegador

23

Operaciones con Listas Enlazadas: Suma, Intercambio y Navegador

Pilas y colas

24

Estructura de datos: Pilas y Colas

25

Paréntesis Válido: análisis del problema

26

Solución de Paréntesis Válido

27

Playground: Paréntesis Válido

28

Programando Paréntesis Válido con C++

29

Comparación de Cadenas con Backspaces

Colas de prioridad

30

Estructura de datos: Colas de Prioridad

31

K Closest Points to Origin: análisis del problema

32

Solución de K Closest Points to Origin

33

Playground: K Closest Points to Origin

34

Programando K Closest Points to Origin con Python

35

Reorganize String: análisis del problema

36

Solución de Reorganize String

37

Playground: Reorganize String

38

Programando Reorganize String con Python

39

Colas de Prioridad: Ejercicios Prácticos y Soluciones

40

Colas de Prioridad y Gestión de Eventos

Próximos pasos

41

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

Paréntesis Válido: análisis del problema

25/41
Recursos

Aportes 2

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Analizando si recorremos los nodos, estaríamos aumentando nuestra complejidad, seria guardar el elemento ( y que por cada elemento debe haber su par ) después de que el primero se agrego.

Para un par de paréntesis tenemos los siguientes casos:

  • Abrimos un paréntesis y lo cerramos posteriormente: En este caso todo bien.
  • Cerramos primero un paréntesis: Aquí retornamos False.
  • Abrimos un paréntesis pero nunca lo cerramos: Aquí también retornamos False.

Al tener una cadena de texto con varios caracteres lo que haremos es añadir a la pila los paréntesis que vamos abriendo, cuando nos encontremos uno de cierre quitamos un paréntesis de la pila. Al iterar sobre la cadena de texto podemos tener los siguientes casos:

  • La pila está vacía y encontramos un paréntesis de cierre: Quiere decir que nunca abrimos el paréntesis, en este caso obtendríamos un error al querer eliminar un elemento que no existe u obtendríamos un elemento nulo en caso de querer acceder al top. Automáticamente los paréntesis son erróneos y retornamos False.
  • Al final de iterar sobre toda la string quedan elementos en la pila: Entonces no se cerraron correctamente algunos paréntesis, en este caso retornamos False.
  • Al final de iterar no hay elementos en la pila: Entonces cerramos correctamente todos los paréntesis, si es que había en la String. Retornamos True.