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

Playground: Paréntesis Válido

27/41

Aportes 10

Preguntas 0

Ordenar por:

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

my code in java, solved in leetcode


   
    
  
    public boolean isValid(String s) {
        Stack<Character> pila = new Stack<>();
        for (int i = 0; i < s.length(); i++) {
            //Valid incorrect case
            if(s.charAt(i) == ')'){
                if(pila.empty() || pila.peek() != '('){
                    return false;
                }
                pila.pop();
                
            }else if(s.charAt(i) == ']'){
                if(pila.empty() || pila.peek() != '['){
                    return false;
                }
                pila.pop();
            }else if(s.charAt(i) == '}'){
                if(pila.empty() || pila.peek() != '{'){
                    return false;
                }
                pila.pop();
            }else{
                if(s.charAt(i) == '('){
                 pila.push(s.charAt(i));
                }if(s.charAt(i) == '['){
                    pila.push(s.charAt(i));
                }if(s.charAt(i) == '{'){
                    pila.push(s.charAt(i));
                } 
            }
        }
        return pila.empty();
    }

Este fue mi código, sí consideran que se puede optimizar les agradecería el aporte 😃

def isValid(string):
   stack = []
   for s in string: 
      try:
         if s == '(':
            stack.append(s)
         if s == ')':
            stack.pop()
      except:
         return False
   if len(stack) > 0 : return False
   return True
   
My solution! ![](https://static.platzi.com/media/user_upload/upload-62e4679c-e655-4e85-905c-ff0e4240db8f.png)
![](https://static.platzi.com/media/user_upload/image-77dae6e2-c82d-4e51-9a31-af6664cd5bc7.jpg)![](https://static.platzi.com/media/user_upload/image-44539f47-5e77-4b20-8548-d39f9a1e3a6d.jpg)
Mi solución en Python: ```python def isValid(s): length = len(s) open_counter, close_counter = 0, 0 for char in s: if char == '(': open_counter += 1 if char == ')': close_counter += 1 if close_counter > open_counter: return False return open_counter == close_counter ```Y en Javascript: ```js const validParenthesis = (searchString) => { const length = searchString.length; let openCounter = 0, closeCounter = 0; for (let index = 0; index < length; index++) { const currentChar = searchString[index]; if (currentChar === '(') { openCounter++; } if (currentChar === ')') { closeCounter++; if (closeCounter > openCounter) return false; } } return openCounter === closeCounter; } ```
`def isValid(s): stack = [] mapping = { ')': '(', '}': '{', ']': '[' }` ` for char in s: if char in mapping: top_element = stack.pop() if stack else '#'` ` if mapping[char] != top_element: return False else: stack.append(char)` ` return not stack `
Mi respuesta: ![](https://static.platzi.com/media/user_upload/imagen-f12b38e1-4b2a-472e-8817-f1a00e3b313f.jpg)
Mi respuesta: ![](https://static.platzi.com/media/user_upload/image-97dca50a-6abf-4594-9ac5-54d8ccac4569.jpg)

Este es mi código del mismo problema en Leetcode pero usando llaves, corchetes y paréntesis.

class Solution:
    def isValid(self, s: str) -> bool:
        pairs = {
            '{': '}',
            '(': ')',
            '[': ']'
        }
        parentheses = []
        # Iterar en cada letra de la string
        for a in s:
            # Si encontramos uno de apertura lo añadimos al stack
            if a in pairs.keys():
                parentheses.append(a)
            # Si encontramos uno de cierre entonces
            elif a in pairs.values():
                if not parentheses:
                    return False
                if pairs[parentheses[-1]] == a:
                    parentheses.pop()
                else:
                    return False
        return not parentheses
undefined