Sobes.tech
Intern

20. სწორი კოვზები მოცემულია ს სიგრძის სტრიქონი, რომელიც შეიცავს მხოლოდ '(', ')', '{', '}', '[' და ']' სიმბოლოებს, განსაზღვრეთ, არის თუ არა შესავალი სტრიქონი ვალიდური. ვალიდური სტრიქონი არის თუ: 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