mirror of
https://github.com/iritmaximus/tira.git
synced 2026-10-12 19:13:47 +03:00
54 lines
1.2 KiB
Python
54 lines
1.2 KiB
Python
from collections import deque
|
|
|
|
|
|
def balance(s):
|
|
brackets = 0
|
|
right_brackets_for_stars = 0
|
|
stars = []
|
|
list = deque(s)
|
|
star_count = 0
|
|
# print(list)
|
|
|
|
for x in list:
|
|
if x == "*":
|
|
star_count += 1
|
|
if star_count != 0:
|
|
if x == ")":
|
|
right_brackets_for_stars += 1
|
|
|
|
for x in list:
|
|
if x == "(":
|
|
brackets += 1
|
|
elif x == ")":
|
|
if brackets <= 0:
|
|
return None
|
|
brackets -= 1
|
|
elif x == "*":
|
|
if star_count == 1:
|
|
stars.append(brackets)
|
|
brackets = 0
|
|
star_count -= 1
|
|
elif star_count != 0:
|
|
stars.append(1)
|
|
star_count -= 1
|
|
brackets -= 1
|
|
|
|
if brackets < 0:
|
|
return None
|
|
|
|
if brackets != 0:
|
|
return None
|
|
|
|
return stars
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print(balance("*(*")) # None
|
|
print(balance("*(")) # None
|
|
print(balance("(*")) # [1]
|
|
print(balance("(())")) # []
|
|
print(balance("(((((*")) # [5]
|
|
print(balance("(((((*(")) # None
|
|
print(balance("((((*(()*()*")) # [2,2,1]
|
|
print(balance("((*))(((*")) # None
|