commit
5503f665c9
algorithms-miscellaneous-5/src
main/java/com/baeldung/algorithms/balancedbrackets
test/java/com/baeldung/algorithms/balancedbrackets
36
algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingDeque.java
Normal file
36
algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingDeque.java
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
package com.baeldung.algorithms.balancedbrackets;
|
||||||
|
|
||||||
|
import java.util.Deque;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
|
||||||
|
public class BalancedBracketsUsingDeque {
|
||||||
|
|
||||||
|
public boolean isBalanced(String str) {
|
||||||
|
if (null == str || ((str.length() % 2) != 0)) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
char[] ch = str.toCharArray();
|
||||||
|
for (char c : ch) {
|
||||||
|
if (!(c == '{' || c == '[' || c == '(' || c == '}' || c == ']' || c == ')')) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Deque<Character> deque = new LinkedList<>();
|
||||||
|
for (char ch : str.toCharArray()) {
|
||||||
|
if (ch == '{' || ch == '[' || ch == '(') {
|
||||||
|
deque.addFirst(ch);
|
||||||
|
} else {
|
||||||
|
if (!deque.isEmpty() && ((deque.peekFirst() == '{' && ch == '}') || (deque.peekFirst() == '[' && ch == ']') || (deque.peekFirst() == '(' && ch == ')'))) {
|
||||||
|
deque.removeFirst();
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
27
algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingString.java
Normal file
27
algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingString.java
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
package com.baeldung.algorithms.balancedbrackets;
|
||||||
|
|
||||||
|
public class BalancedBracketsUsingString {
|
||||||
|
|
||||||
|
public boolean isBalanced(String str) {
|
||||||
|
if (null == str || ((str.length() % 2) != 0)) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
char[] ch = str.toCharArray();
|
||||||
|
for (char c : ch) {
|
||||||
|
if (!(c == '{' || c == '[' || c == '(' || c == '}' || c == ']' || c == ')')) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
while (str.contains("()") || str.contains("[]") || str.contains("{}")) {
|
||||||
|
str = str.replaceAll("\\(\\)", "")
|
||||||
|
.replaceAll("\\[\\]", "")
|
||||||
|
.replaceAll("\\{\\}", "");
|
||||||
|
}
|
||||||
|
return (str.length() == 0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
76
algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingDequeUnitTest.java
Normal file
76
algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingDequeUnitTest.java
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
package com.baeldung.algorithms.balancedbrackets;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
public class BalancedBracketsUsingDequeUnitTest {
|
||||||
|
private BalancedBracketsUsingDeque balancedBracketsUsingDeque;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setup() {
|
||||||
|
balancedBracketsUsingDeque = new BalancedBracketsUsingDeque();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenNullInput_whenCheckingForBalance_shouldReturnFalse() {
|
||||||
|
boolean result = balancedBracketsUsingDeque.isBalanced(null);
|
||||||
|
assertThat(result).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenEmptyString_whenCheckingForBalance_shouldReturnTrue() {
|
||||||
|
boolean result = balancedBracketsUsingDeque.isBalanced("");
|
||||||
|
assertThat(result).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenInvalidCharacterString_whenCheckingForBalance_shouldReturnFalse() {
|
||||||
|
boolean result = balancedBracketsUsingDeque.isBalanced("abc[](){}");
|
||||||
|
assertThat(result).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenOddLengthString_whenCheckingForBalance_shouldReturnFalse() {
|
||||||
|
boolean result = balancedBracketsUsingDeque.isBalanced("{{[]()}}}");
|
||||||
|
assertThat(result).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenEvenLengthString_whenCheckingForBalance_shouldReturnFalse() {
|
||||||
|
boolean result = balancedBracketsUsingDeque.isBalanced("{{[]()}}}}");
|
||||||
|
assertThat(result).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenEvenLengthUnbalancedString_whenCheckingForBalance_shouldReturnFalse() {
|
||||||
|
boolean result = balancedBracketsUsingDeque.isBalanced("{[(])}");
|
||||||
|
assertThat(result).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenEvenLengthBalancedString_whenCheckingForBalance_shouldReturnTrue() {
|
||||||
|
boolean result = balancedBracketsUsingDeque.isBalanced("{[()]}");
|
||||||
|
assertThat(result).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenBalancedString_whenCheckingForBalance_shouldReturnTrue() {
|
||||||
|
boolean result = balancedBracketsUsingDeque.isBalanced("{{[[(())]]}}");
|
||||||
|
assertThat(result).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenAnotherBalancedString_whenCheckingForBalance_shouldReturnTrue() {
|
||||||
|
boolean result = balancedBracketsUsingDeque.isBalanced("{{([])}}");
|
||||||
|
assertThat(result).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenUnBalancedString_whenCheckingForBalance_shouldReturnFalse() {
|
||||||
|
boolean result = balancedBracketsUsingDeque.isBalanced("{{)[](}}");
|
||||||
|
assertThat(result).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
76
algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingStringUnitTest.java
Normal file
76
algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingStringUnitTest.java
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
package com.baeldung.algorithms.balancedbrackets;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
public class BalancedBracketsUsingStringUnitTest {
|
||||||
|
private BalancedBracketsUsingString balancedBracketsUsingString;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setup() {
|
||||||
|
balancedBracketsUsingString = new BalancedBracketsUsingString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenNullInput_whenCheckingForBalance_shouldReturnFalse() {
|
||||||
|
boolean result = balancedBracketsUsingString.isBalanced(null);
|
||||||
|
assertThat(result).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenEmptyString_whenCheckingForBalance_shouldReturnTrue() {
|
||||||
|
boolean result = balancedBracketsUsingString.isBalanced("");
|
||||||
|
assertThat(result).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenInvalidCharacterString_whenCheckingForBalance_shouldReturnFalse() {
|
||||||
|
boolean result = balancedBracketsUsingString.isBalanced("abc[](){}");
|
||||||
|
assertThat(result).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenOddLengthString_whenCheckingForBalance_shouldReturnFalse() {
|
||||||
|
boolean result = balancedBracketsUsingString.isBalanced("{{[]()}}}");
|
||||||
|
assertThat(result).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenEvenLengthString_whenCheckingForBalance_shouldReturnFalse() {
|
||||||
|
boolean result = balancedBracketsUsingString.isBalanced("{{[]()}}}}");
|
||||||
|
assertThat(result).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenEvenLengthUnbalancedString_whenCheckingForBalance_shouldReturnFalse() {
|
||||||
|
boolean result = balancedBracketsUsingString.isBalanced("{[(])}");
|
||||||
|
assertThat(result).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenEvenLengthBalancedString_whenCheckingForBalance_shouldReturnTrue() {
|
||||||
|
boolean result = balancedBracketsUsingString.isBalanced("{[()]}");
|
||||||
|
assertThat(result).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenBalancedString_whenCheckingForBalance_shouldReturnTrue() {
|
||||||
|
boolean result = balancedBracketsUsingString.isBalanced("{{[[(())]]}}");
|
||||||
|
assertThat(result).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenAnotherBalancedString_whenCheckingForBalance_shouldReturnTrue() {
|
||||||
|
boolean result = balancedBracketsUsingString.isBalanced("{{([])}}");
|
||||||
|
assertThat(result).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenUnBalancedString_whenCheckingForBalance_shouldReturnFalse() {
|
||||||
|
boolean result = balancedBracketsUsingString.isBalanced("{{)[](}}");
|
||||||
|
assertThat(result).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user