В этой статье блога мы погрузимся в увлекательный мир проверки строки в круглых скобках и рассмотрим несколько самодельных методов достижения этой цели. По ходу дела мы будем предоставлять примеры кода, чтобы вам было легче понять каждый метод. Итак, давайте начнем и разгадаем тайну допустимой строки в круглых скобках!
Метод 1: подход на основе стека
Один из наиболее распространенных методов проверки строк в круглых скобках — использование структуры данных стека. Идея состоит в том, чтобы поместить открывающие скобки в стек и удалить их при обнаружении закрывающей скобки. Если стек в конце строки пуст, это означает, что круглые скобки сбалансированы. Вот пример реализации на Python:
def is_valid_parenthesis_string(s):
stack = []
for char in s:
if char == '(':
stack.append(char)
elif char == ')':
if not stack:
return False
stack.pop()
return len(stack) == 0
Метод 2: Подсчет
Другой подход заключается в подсчете открывающихся и закрывающих скобок. Перемещайте строку слева направо и увеличивайте счетчик открывающихся скобок и уменьшайте его для закрывающих скобок. Если счетчик когда-либо становится отрицательным или в конце он не равен нулю, строка недействительна. Вот пример реализации на Python:
def is_valid_parenthesis_string(s):
count = 0
for char in s:
if char == '(':
count += 1
elif char == ')':
count -= 1
if count < 0:
return False
return count == 0
Метод 3: рекурсивный подход
Рекурсивный метод также можно использовать для проверки строки в круглых скобках. Идея состоит в том, чтобы определить рекурсивную функцию, которая проверяет достоверность подстроки внутри более крупной строки. Функция должна обрабатывать три случая: когда подстрока начинается с «(», начинается с «)» или начинается с «*». Исследуя все возможные комбинации, мы можем определить, действительна ли строка. Вот пример реализации на Python:
def is_valid_parenthesis_string(s):
def is_valid(s, open_count, close_count):
if open_count < 0 or close_count < 0:
return False
if not s:
return open_count == 0 and close_count == 0
if s[0] == '(':
return is_valid(s[1:], open_count + 1, close_count)
elif s[0] == ')':
return is_valid(s[1:], open_count, close_count + 1)
else:
return is_valid(s[1:], open_count + 1, close_count) or is_valid(s[1:], open_count, close_count + 1) or is_valid(s[1:], open_count, close_count)
return is_valid(s, 0, 0)
В этой статье мы рассмотрели три самостоятельных метода проверки строки в скобках. Мы рассмотрели подход на основе стека, метод подсчета и рекурсивный подход, приведя примеры кода для каждого из них. Эти методы предлагают различные способы проверки правильности строки в скобках, и вы можете выбрать тот, который лучше всего соответствует вашим потребностям. Итак, в следующий раз, когда вы встретите строку в круглых скобках, вы будете готовы проверить ее с помощью этих самодельных методов.
Помните, что, хорошо разбираясь в этих методах, вы сможете обращаться со строками в круглых скобках как профессионал!