File tree 1 file changed +58
-0
lines changed
1 file changed +58
-0
lines changed Original file line number Diff line number Diff line change
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
+
You can’t perform that action at this time.
0 commit comments