Skip to content

Commit 7e9cdad

Browse files
authored
refactor: BalancedBrackets (#5391)
1 parent 580aa0c commit 7e9cdad

File tree

2 files changed

+38
-6
lines changed

2 files changed

+38
-6
lines changed

src/main/java/com/thealgorithms/stacks/BalancedBrackets.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,26 +59,22 @@ public static boolean isBalanced(String brackets) {
5959
switch (bracket) {
6060
case '(':
6161
case '[':
62+
case '<':
6263
case '{':
6364
bracketsStack.push(bracket);
6465
break;
6566
case ')':
6667
case ']':
68+
case '>':
6769
case '}':
6870
if (bracketsStack.isEmpty() || !isPaired(bracketsStack.pop(), bracket)) {
6971
return false;
7072
}
7173
break;
7274
default:
73-
/* other character is invalid */
7475
return false;
7576
}
7677
}
7778
return bracketsStack.isEmpty();
7879
}
79-
80-
public static void main(String[] args) {
81-
assert isBalanced("[()]{}{[()()]()}");
82-
assert !isBalanced("[(])");
83-
}
8480
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.thealgorithms.stacks;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertFalse;
5+
import static org.junit.jupiter.api.Assertions.assertThrows;
6+
import static org.junit.jupiter.api.Assertions.assertTrue;
7+
8+
import org.junit.jupiter.api.Test;
9+
import org.junit.jupiter.params.ParameterizedTest;
10+
import org.junit.jupiter.params.provider.CsvSource;
11+
12+
class BalancedBracketsTest {
13+
14+
@ParameterizedTest
15+
@CsvSource({"(, )", "[, ]", "{, }", "<, >"})
16+
void testIsPairedTrue(char opening, char closing) {
17+
assertTrue(BalancedBrackets.isPaired(opening, closing));
18+
}
19+
20+
@ParameterizedTest
21+
@CsvSource({"(, ]", "[, )", "{, >", "<, )", "a, b", "!, @"})
22+
void testIsPairedFalse(char opening, char closing) {
23+
assertFalse(BalancedBrackets.isPaired(opening, closing));
24+
}
25+
26+
@ParameterizedTest
27+
@CsvSource({"'[()]{}{[()()]()}', true", "'()', true", "'[]', true", "'{}', true", "'<>', true", "'[{<>}]', true", "'', true", "'[(])', false", "'([)]', false", "'{[<]>}', false", "'[', false", "')', false", "'[{', false", "']', false", "'[a+b]', false", "'a+b', false"})
28+
void testIsBalanced(String input, boolean expected) {
29+
assertEquals(expected, BalancedBrackets.isBalanced(input));
30+
}
31+
32+
@Test
33+
void testIsBalancedNull() {
34+
assertThrows(IllegalArgumentException.class, () -> BalancedBrackets.isBalanced(null));
35+
}
36+
}

0 commit comments

Comments
 (0)