-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathExpression.java
More file actions
executable file
·47 lines (36 loc) · 1.38 KB
/
Copy pathExpression.java
File metadata and controls
executable file
·47 lines (36 loc) · 1.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package com.codeWithArsalon.LinearDS;
import java.util.Arrays;
import java.util.List;
import java.util.Stack;
public class Expression {
private String input;
private final List<Character> leftBrackets
= Arrays.asList('(', '<', '[', '{'); //creates an array list stores left brackets
private final List<Character> rightBrackets
= Arrays.asList(')', '>', ']' , '}'); //creates an array list stores right brackets
public Expression(String input){
this.input = input;
}
public boolean isBalanced (){
Stack<Character> stack = new Stack<>();
for(char ch : input.toCharArray()) {
if (isLeftBracket(ch))
stack.push(ch);
if (isRightBracket(ch)) {
if (stack.empty()) return false; //error handling
var top = stack.pop(); //pops the previously stored (left bracket)
if (!bracketsMatch(top, ch)) return false;
}
}
return stack.empty();
}
private boolean isLeftBracket(char ch){
return leftBrackets.contains(ch);
}
private boolean isRightBracket(char ch){
return rightBrackets.contains(ch);
}
private boolean bracketsMatch(char left, char right){
return leftBrackets.indexOf(left) == rightBrackets.indexOf(right); //compares index of char in left w/ index of char of right
}
}