Skip to content

Commit 402da82

Browse files
committed
stack
1 parent 48e41fb commit 402da82

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

‎Hard1106.java

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import java.util.ArrayList;
2+
import java.util.List;
3+
import java.util.Stack;
4+
5+
6+
class Hard1106{
7+
public char evalExpr(char op, List<Character> list){
8+
if (op =='!'){
9+
return list.get(0)=='t'?'f':'t';
10+
11+
}
12+
else if (op == '&'){
13+
for (char c: list){
14+
if(c=='f'){
15+
return 'f';
16+
}
17+
}
18+
return 't';
19+
} else if (op =='|'){
20+
for (char c: list){
21+
if(c=='t'){
22+
return 't';
23+
}
24+
}
25+
return 'f';
26+
}
27+
return 'f';
28+
29+
}
30+
public boolean parseBoolExpr(String expression) {
31+
//"!(&(f,t))"
32+
Stack<Character> stack = new Stack<>();
33+
34+
for (char c:expression.toCharArray()){
35+
if (c == ')'){
36+
List<Character>list=new ArrayList<>();
37+
while (stack.peek() != '('){
38+
list.add(stack.pop());
39+
40+
}
41+
stack.pop();
42+
char op=stack.pop();
43+
char res= evalExpr(op,list);
44+
stack.push(res);
45+
46+
} else if (c !=','){
47+
stack.push(c);
48+
49+
}
50+
51+
}
52+
return stack.peek() == 't'? true : false;
53+
54+
55+
}
56+
}
57+
58+

0 commit comments

Comments
 (0)