DEV Community

özkan pakdil
özkan pakdil

Posted on

balanced string

A bracket is considered to be any one of the following characters: ( ) { } [ or ].

Two brackets are a matched pair if the an opening bracket i.e. ( [ or { occurs to the left of a closing bracket i.e. ) ] or } of the same type. There are three types of matched pairs of brackets: [], {}, and ().

A matching pair of brackets is not balanced if the set of brackets it encloses are not matched. For example, {[(])} is not balanced because the contents in between { and } are not balanced. The pair of square brackets encloses a single, unbalanced opening bracket, (, and the pair of parentheses encloses a single, unbalanced closing square bracket, ].

By this logic, we say a sequence of brackets is balanced if the following conditions are met:

It contains no unmatched brackets.
The subset of brackets enclosed within the confines of a matched pair of brackets is also a matched pair of brackets.
Given strings of brackets, determine whether each sequence of brackets is balanced. If a string is balanced, return YES. Otherwise, return NO.

Function Description - Complete the function isBalanced in the editor below.

isBalanced has the following parameter(s):
s: a string of brackets

Constraints
All characters are in the sequences { } ( ) and [ ].

Output Format
For each string, return YES or NO: YES if the sequence is balanced or NO if it is not.

Solution below

import java.util.*;
import org.junit.*;
import org.junit.runner.*;
import static org.junit.Assert.*;

public class Solution {
    private static String isBalanced(String s){
      while(s.contains("()") || s.contains("[]") || s.contains("{}")) {
          s = s.replace("()", "").replace("[]", "").replace("{}", "");
      }
      return s.isEmpty() ? "YES" : "NO";
    }

    public static void main(String[] args) {
        JUnitCore.main("Solution");
    }

    @Test
    public void test1() {
        String input = "{[()]}";
        String expected = "YES";
        String actual = isBalanced(input);
        assertEquals(expected, actual);
    }

    @Test
    public void test2() {
        String input = "{}[]";
        String expected = "YES";
        String actual = isBalanced(input);
        assertEquals(expected, actual);
    }

    @Test
    public void test3() {
      String input = "{[(])}";
      String expected = "NO";
      String actual = isBalanced(input);
      assertEquals(expected, actual);
    }

}
Enter fullscreen mode Exit fullscreen mode

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more →

Top comments (0)

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more