▶️Популярная задача с собеседований: написать код для проверки, верно ли расставлены скобки в выражении (для каждой открывающей должна быть закрывающая скобка).
Как можно написать этот код?
▶️Оптимальным решением будет использование стека и постоянное удаление элементов в нем, если скобки открывающаяся и закрывающаяся совпадают, то они очищаются из стека и так до тех пор, пока он не окажется пустым:
def check(string):
brackets_open = ('(', '[', '{', '<')
brackets_closed = (')', ']', '}', '>')
stack = []
for i in string:
if i in brackets_open:
stack.append(i)
if i in brackets_closed:
if len(stack) == 0:
return False
index = brackets_closed.index(i)
open_bracket = brackets_open[index]
if stack[-1] == open_bracket:
stack = stack[:-1]
else: return False
return (not stack)
Проверяем, как работает:
str1 = '[{([[[<>]]])(<>)(){}}]'
str2 = ']()(){<>}[[()]]'
print(check(str1)) #True
print(check(str2)) #False🟡Ну а если хочется вызвать особые чувства у собеседующего — используйте Regex (второе изображение)
@python_job_interview

