0

Python data structure project #4 balanced parentheses

https://code.sololearn.com/cIofz73jyVJd/?ref=app Please help me to find an error. Most test cases are fine but it doesn’t work for a few test cases and I don’t know why.

6th Mar 2023, 10:42 PM
Nat
Nat - avatar
8 odpowiedzi
+ 6
This project prompts you to use a stack. The standard "list" data structure can act like a stack. The append method puts an element at the end (on top of the stack). The pop method removes the last element (again, the top of the stack). If the list is empty, pop will cause an error. You can also take advantage of this, and use error handling to detect a wrong usage of parentheses. In the following code it doesn't really matter what you put on the stack, just a marker element that means a new level of parentheses has been opened. I used 1 here. Algorithm: - loop through all characters - opening parenthesis: put 1 on the stack - closing parenthesis: pop the last element. If there is an error, the sample was flawed. - at the end the stack must be empty, this marks a balanced result. def balanced(expression): stack = [] for c in expression: if c == '(': stack.append(1) elif c == ')': try: stack.pop() except: return False return len(stack) == 0
7th Mar 2023, 9:52 AM
Tibor Santa
Tibor Santa - avatar
+ 2
almost the same as Tibor Santa ‘s answer if you add new item at the front of stack def balanced(expression): #your code goes here stack = [] for c in expression: if c == '(': stack.insert(0, c) elif c == ')': if not stack or stack.pop(0) != '(': return False return len(stack) == 0
8th Mar 2023, 4:00 AM
o.gak
o.gak - avatar
+ 1
Tibor Santa thank you!
7th Mar 2023, 5:31 PM
Nat
Nat - avatar
0
try this for i in a: if i == '(': list.append('(') if list: ## check the list is not empty before trying to pop the ')'. if i == ')': list.pop() edit, no, didn't work
6th Mar 2023, 11:07 PM
rodwynnejones
rodwynnejones - avatar
0
rodwynnejones Thank you it helped for test case 7 but still it doesnt work for test case 3.. it is hidden test case so I dont know why
6th Mar 2023, 11:20 PM
Nat
Nat - avatar
0
Might be better off doing it all in a function and check if the a[0] is a ')' or a[-1} is a '(' so you can return "false" early, then do the append and pop routine if needed.
6th Mar 2023, 11:27 PM
rodwynnejones
rodwynnejones - avatar
0
I just passed all test cases by doing this but im pretty sure way more simpler answer exists a = input() list = [] count = 0 for i in a: if i == '(': list.append('(') count +=1 if i == ')': if list == []: count +=1 if list !=[]: list.pop() count -=1 if list == [] and count==0: print("True") if list != [] or count !=0: print("False")
7th Mar 2023, 2:22 AM
Nat
Nat - avatar
0
Ok bro
8th Mar 2023, 11:54 AM
High Sabar
High Sabar - avatar