Sobes.tech
Intern

20. Έγκυρες Παρενθέσεις Δεδομένης μιας συμβολοσειράς s που περιέχει μόνο τους χαρακτήρες '(', ')', '{', '}', '[' και ']', καθορίστε αν η εισερχόμενη συμβολοσειρά είναι έγκυρη. Μια εισερχόμενη συμβολοσειρά είναι έγκυρη αν: 1. Οι ανοιχτές παρενθέσεις πρέπει να κλείνονται με τον ίδιο τύπο παρενθέσεων. 2. Οι ανοιχτές παρενθέσεις πρέπει να κλείνονται με τη σωστή σειρά. 3. Κάθε κλειστή παρένθεση έχει μια αντίστοιχη ανοιχτή παρένθεση του ίδιου τύπου. Παράδειγμα 1: Είσοδος: s = "()" Έξοδος: true Παράδειγμα 2: Είσοδος: s = "()[]{}" Έξοδος: true Παράδειγμα 3: Είσοδος: s = "(]" Έξοδος: false

sobes.tech AI

Απάντηση από AI

Для проверки валидности строки с скобками удобно использовать стек. Идея:

  • Проходим по символам строки.
  • Если символ — открывающая скобка, кладём её в стек.
  • Если закрывающая — проверяем, что верхний элемент стека соответствует ей по типу.
  • Если нет соответствия или стек пуст, строка невалидна.
  • В конце стек должен быть пустым.

Пример на Python:

def isValid(s):
    stack = []
    pairs = {')': '(', '}': '{', ']': '['}
    for char in s:
        if char in '([{':
            stack.append(char)
        elif char in ')]}':
            if not stack or stack.pop() != pairs[char]:
                return False
    return not stack

# Примеры
print(isValid("()"))      # True
print(isValid("()[]{}"))  # True
print(isValid("(]"))      # False