BAEL-3481 - updated with review comments.
This commit is contained in:
parent
ba7ac3c5b7
commit
8676327794
@ -1,8 +1,9 @@
|
|||||||
package com.baeldung.algorithms.balancedbrackets;
|
package com.baeldung.algorithms.balancedbrackets;
|
||||||
|
|
||||||
import java.util.Stack;
|
import java.util.Deque;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
|
||||||
public class BalancedBracketsUsingStack {
|
public class BalancedBracketsUsingDeque {
|
||||||
|
|
||||||
public boolean isBalanced(String str) {
|
public boolean isBalanced(String str) {
|
||||||
if (null == str || str.length() == 0 || ((str.length() % 2) != 0)) {
|
if (null == str || str.length() == 0 || ((str.length() % 2) != 0)) {
|
||||||
@ -17,17 +18,17 @@ public class BalancedBracketsUsingStack {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Stack<Character> stack = new Stack<>();
|
Deque<Character> deque = new LinkedList<>();
|
||||||
for (char ch: str.toCharArray()) {
|
for (char ch: str.toCharArray()) {
|
||||||
if (ch == '{' || ch == '[' || ch == '(') {
|
if (ch == '{' || ch == '[' || ch == '(') {
|
||||||
stack.push(ch);
|
deque.addFirst(ch);
|
||||||
} else {
|
} else {
|
||||||
if ( !stack.isEmpty()
|
if ( !deque.isEmpty()
|
||||||
&& ((stack.peek() == '{' && ch == '}')
|
&& ((deque.peekFirst() == '{' && ch == '}')
|
||||||
|| (stack.peek() == '[' && ch == ']')
|
|| (deque.peekFirst() == '[' && ch == ']')
|
||||||
|| (stack.peek() == '(' && ch == ')')
|
|| (deque.peekFirst() == '(' && ch == ')')
|
||||||
)) {
|
)) {
|
||||||
stack.pop();
|
deque.removeFirst();
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
@ -5,75 +5,75 @@ import org.junit.Test;
|
|||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
public class BalancedBracketsUsingStackUnitTest {
|
public class BalancedBracketsUsingDequeUnitTest {
|
||||||
private BalancedBracketsUsingStack balancedBracketsUsingStack;
|
private BalancedBracketsUsingDeque balancedBracketsUsingDeque;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
balancedBracketsUsingStack = new BalancedBracketsUsingStack();
|
balancedBracketsUsingDeque = new BalancedBracketsUsingDeque();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenNullInput_whenCheckingForBalance_shouldReturnFalse() {
|
public void givenNullInput_whenCheckingForBalance_shouldReturnFalse() {
|
||||||
boolean result = balancedBracketsUsingStack.isBalanced(null);
|
boolean result = balancedBracketsUsingDeque.isBalanced(null);
|
||||||
assertThat(result).isFalse();
|
assertThat(result).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenEmptyString_whenCheckingForBalance_shouldReturnFalse() {
|
public void givenEmptyString_whenCheckingForBalance_shouldReturnFalse() {
|
||||||
boolean result = balancedBracketsUsingStack.isBalanced("");
|
boolean result = balancedBracketsUsingDeque.isBalanced("");
|
||||||
assertThat(result).isFalse();
|
assertThat(result).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenInvalidCharacterString_whenCheckingForBalance_shouldReturnFalse() {
|
public void givenInvalidCharacterString_whenCheckingForBalance_shouldReturnFalse() {
|
||||||
boolean result = balancedBracketsUsingStack.isBalanced("abc[](){}");
|
boolean result = balancedBracketsUsingDeque.isBalanced("abc[](){}");
|
||||||
assertThat(result).isFalse();
|
assertThat(result).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenOddLengthString_whenCheckingForBalance_shouldReturnFalse() {
|
public void givenOddLengthString_whenCheckingForBalance_shouldReturnFalse() {
|
||||||
boolean result = balancedBracketsUsingStack.isBalanced("{{[]()}}}");
|
boolean result = balancedBracketsUsingDeque.isBalanced("{{[]()}}}");
|
||||||
assertThat(result).isFalse();
|
assertThat(result).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenEvenLengthString_whenCheckingForBalance_shouldReturnFalse() {
|
public void givenEvenLengthString_whenCheckingForBalance_shouldReturnFalse() {
|
||||||
boolean result = balancedBracketsUsingStack.isBalanced("{{[]()}}}}");
|
boolean result = balancedBracketsUsingDeque.isBalanced("{{[]()}}}}");
|
||||||
assertThat(result).isFalse();
|
assertThat(result).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenEvenLengthUnbalancedString_whenCheckingForBalance_shouldReturnFalse() {
|
public void givenEvenLengthUnbalancedString_whenCheckingForBalance_shouldReturnFalse() {
|
||||||
boolean result = balancedBracketsUsingStack.isBalanced("{[(])}");
|
boolean result = balancedBracketsUsingDeque.isBalanced("{[(])}");
|
||||||
assertThat(result).isFalse();
|
assertThat(result).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenEvenLengthBalancedString_whenCheckingForBalance_shouldReturnTrue() {
|
public void givenEvenLengthBalancedString_whenCheckingForBalance_shouldReturnTrue() {
|
||||||
boolean result = balancedBracketsUsingStack.isBalanced("{[()]}");
|
boolean result = balancedBracketsUsingDeque.isBalanced("{[()]}");
|
||||||
assertThat(result).isTrue();
|
assertThat(result).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenBalancedString_whenCheckingForBalance_shouldReturnTrue() {
|
public void givenBalancedString_whenCheckingForBalance_shouldReturnTrue() {
|
||||||
boolean result = balancedBracketsUsingStack.isBalanced("{{[[(())]]}}");
|
boolean result = balancedBracketsUsingDeque.isBalanced("{{[[(())]]}}");
|
||||||
assertThat(result).isTrue();
|
assertThat(result).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenAnotherBalancedString_whenCheckingForBalance_shouldReturnTrue() {
|
public void givenAnotherBalancedString_whenCheckingForBalance_shouldReturnTrue() {
|
||||||
boolean result = balancedBracketsUsingStack.isBalanced("{{([])}}");
|
boolean result = balancedBracketsUsingDeque.isBalanced("{{([])}}");
|
||||||
assertThat(result).isTrue();
|
assertThat(result).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenUnBalancedString_whenCheckingForBalance_shouldReturnFalse() {
|
public void givenUnBalancedString_whenCheckingForBalance_shouldReturnFalse() {
|
||||||
boolean result = balancedBracketsUsingStack.isBalanced("{{)[](}}");
|
boolean result = balancedBracketsUsingDeque.isBalanced("{{)[](}}");
|
||||||
assertThat(result).isFalse();
|
assertThat(result).isFalse();
|
||||||
}
|
}
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user