профайлер пробовали?
dingoКакой объем текста?
менять алгоритм пробовал не помогло , ограничения по времени 2сек
f=open("brackets.in") l=f.read() def proverka(masiv,steck): bool="True" for q in masiv: if q=="(" or q=="[" or q=="{": steck.insert(0,q) else: if q=="]" and steck[0]=="[": del(steck[0]) elif q==")" and steck[0]=="(": del(steck[0]) elif q=="}" and steck[0]=="{": del(steck[0]) else: otvet="NO" bool="False" break if bool=="True": if len(steck)==0: otvet="YES" else: otvet="NO" return otvet if len(l)%2==0: steck=[l[0]] otvet=proverka(l[1::],steck) else: otvet="NO" f1=open("brackets.out","w") f1.write(otvet) f1.close()
bool="True"
...
if q=="(" or q=="[" or q=="{":
...
otvet="NO"
bool="False"
...
if bool=="True":
def correct_brackets(sequence): open_brackets = "({[" close_brackets = ")}]" stack = [] for bracket in sequence: try: if bracket in open_brackets: stack.append(bracket) elif open_brackets.index(stack.pop()) == close_brackets.index(bracket): pass else: return False except (ValueError, IndexError): return False if stack: return False return True
seq = "(([[{{}}]]))" time_before = time.time() for _ in range(100000): correct_brackets(seq) print time.time() - time_before
open_brackets = {'(':1, '{':2, '[':3} close_brackets = {')':1, '}':2, ']':3}
def correct_brackets(sequence): open_brackets = "({[" dict_open_brackets = {'(':1, '{':2, '[':3} dict_close_brackets = {')':1, '}':2, ']':3} stack = [] for bracket in sequence: try: if bracket in open_brackets: stack.append(bracket) elif dict_open_brackets[stack.pop()] == dict_close_brackets[bracket]: pass else: return False except (ValueError, IndexError): return False if stack: return False return True