paranthesis matching algorithm code example
Example 1: bracket balancing c++
bool correct_paranthesis(string str){
stack<char> stk;
map<char,char> bracket_map;
bracket_map[')'] = '(';
bracket_map['}'] = '{';
bracket_map[']'] = '[';
for(int i=0; i<str.size(); i++){
if(str[i] == '(' || str[i] == '{' || str[i] == '[')
stk.push(str[i]);
if(str[i] == ')' || str[i] == '}' || str[i] == ']'){
if(stk.empty())
return false;
if(stk.top() == bracket_map[str[i]] )
stk.pop();
}
}
return (stk.empty() == true);
}
Example 2: bracket balancing program in java
import java.util.Scanner;
import java.util.ArrayList;
public class BalanceBracket {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("enter a string with '(', '{' or '['");
String s = sc.nextLine();
String y = isBalanced(s);
System.out.println(y);
}
static String isBalanced(String s)
{
String result = "NO";
ArrayList<String> al = new ArrayList<String>();
for(int i = 0; i < s.length(); i++)
{
if(s.charAt(i) == '(' || s.charAt(i) == '{' || s.charAt(i) == '[')
{
al.add(Character.toString(s.charAt(i)));
}
else if(s.charAt(i) == ')' || s.charAt(i) == '}' || s.charAt(i) == ']')
{
if(al.size() != 0 && al.get(al.size()-1).equals("(") && s.charAt(i) == ')')
{
al.remove(al.size()-1);
}
else if(al.size() != 0 && al.get(al.size()-1).equals("{") && s.charAt(i) == '}')
{
al.remove(al.size()-1);
}
else if(al.size() != 0 && al.get(al.size()-1).equals("[") && s.charAt(i) == ']')
{
al.remove(al.size()-1);
}
else
{
return result = "NO";
}
}
}
if(al.isEmpty() == true)
{
return result = "YES";
}
return result;
}
}
Example 3: bracket balance java
class Parser{
static HashMap<Character,Character> bracket_map = new HashMap<>();
static {
bracket_map.put(')', '(');
bracket_map.put('}','{');
bracket_map.put(']','[');
}
boolean isBalanced(String s){
Stack<Character> stack = new Stack<>();
char temp;
for (int i = 0; i < s.length(); i++) {
temp = s.charAt(i);
if(temp == '{' || temp == '[' || temp == '('){
stack.push(temp);
}else {
if(stack.isEmpty() || stack.peek() != bracket_map.get(temp)) return false;
stack.pop();
}
}
return stack.isEmpty();
}
}