# Print Bracket Number

• Difficulty Level : Easy
• Last Updated : 21 May, 2021

Given an expression exp of length n consisting of some brackets. The task is to print the bracket numbers when the expression is being parsed.
Examples :

```Input : (a+(b*c))+(d/e)
Output : 1 2 2 1 3 3
The highlighted brackets in the given expression
(a+(b*c))+(d/e) has been assigned the numbers as:
1 2 2 1 3 3.

Input : ((())(()))
Output : 1 2 3 3 2 4 5 5 4 1 ```

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

Approach

1. Define a variable left_bnum = 1.
2. Create a stack right_bnum.
3. Now, for i = 0 to n-1.
1. If exp[i] == ‘(‘, then print left_bnum, push left_bnum on to the stack right_bnum and finally increment left_bnum by 1.
2. Else if exp[i] == ‘)’, then print the top element of the stack right_bnum and then pop the top element from the stack.

## C++

 `// C++ implementation to print the bracket number``#include ` `using` `namespace` `std;` `// function to print the bracket number``void` `printBracketNumber(string ``exp``, ``int` `n)``{``    ``// used to print the bracket number``    ``// for the left bracket``    ``int` `left_bnum = 1;``    ` `    ``// used to obtain the bracket number``    ``// for the right bracket``    ``stack<``int``> right_bnum;``    ` `    ``// traverse the given expression 'exp'``    ``for` `(``int` `i = 0; i < n; i++) {``        ` `        ``// if current character is a left bracket``        ``if` `(``exp``[i] == ``'('``) {``            ``// print 'left_bnum',``            ``cout << left_bnum << ``" "``;``            ` `            ``// push 'left_bum' on to the stack 'right_bnum'``            ``right_bnum.push(left_bnum);``            ` `            ``// increment 'left_bnum' by 1``            ``left_bnum++;``        ``}``        ` `        ``// else if current character is a right bracket``        ``else` `if``(``exp``[i] == ``')'``) {` `            ``// print the top element of stack 'right_bnum'``            ``// it will be the right bracket number``            ``cout << right_bnum.top() << ``" "``;``            ` `            ``// pop the top element from the stack``            ``right_bnum.pop();``        ``}``    ``}``}` `// Driver program to test above``int` `main()``{``    ``string ``exp` `= ``"(a+(b*c))+(d/e)"``;``    ``int` `n = ``exp``.size();``    ` `    ``printBracketNumber(``exp``, n);``    ` `    ``return` `0;``}`

## Java

 `// Java implementation to``// print the bracket number``import` `java.io.*;``import` `java.util.*;` `class` `GFG``{``    ``// function to print``    ``// the bracket number``    ``static` `void` `printBracketNumber(String exp,``                                   ``int` `n)``    ``{``        ``// used to print the``        ``// bracket number for``        ``// the left bracket``        ``int` `left_bnum = ``1``;``        ` `        ``// used to obtain the``        ``// bracket number for``        ``// the right bracket``        ``Stack right_bnum =``                   ``new` `Stack();``        ` `        ``// traverse the given``        ``// expression 'exp'``        ``for` `(``int` `i = ``0``; i < n; i++)``        ``{``            ` `            ``// if current character``            ``// is a left bracket``            ``if` `(exp.charAt(i) == ``'('``)``            ``{``                ` `                ``// print 'left_bnum',``                ``System.out.print(``                       ``left_bnum + ``" "``);``                ` `                ``// push 'left_bum' on to``                ``// the stack 'right_bnum'``                ``right_bnum.push(left_bnum);``                ` `                ``// increment 'left_bnum' by 1``                ``left_bnum++;``            ``}``            ` `            ``// else if current character``            ``// is a right bracket``            ``else` `if``(exp.charAt(i) == ``')'``)``            ``{``    ` `                ``// print the top element``                ``// of stack 'right_bnum'``                ``// it will be the right``                ``// bracket number``                ``System.out.print(``                       ``right_bnum.peek() + ``" "``);``                ` `                ``// pop the top element``                ``// from the stack``                ``right_bnum.pop();``            ``}``        ``}``    ``}``    ` `    ``// Driver Code``    ``public` `static` `void` `main(String args[])``    ``{``        ``String exp = ``"(a+(b*c))+(d/e)"``;``        ``int` `n = exp.length();``        ` `        ``printBracketNumber(exp, n);``    ``}``}` `// This code is contributed``// by Manish Shaw(manishshaw1)`

## Python3

 `# Python3 implementation to print the bracket number` `# function to print the bracket number``def` `printBracketNumber(exp, n):` `    ``# used to print the bracket number``    ``# for the left bracket``    ``left_bnum ``=` `1` `    ``# used to obtain the bracket number``    ``# for the right bracket``    ``right_bnum ``=` `list``()` `    ``# traverse the given expression 'exp'``    ``for` `i ``in` `range``(n):` `        ``# if current character is a left bracket``        ``if` `exp[i] ``=``=` `'('``:` `            ``# print 'left_bnum',``            ``print``(left_bnum, end ``=` `" "``)` `            ``# push 'left_bum' on to the stack 'right_bnum'``            ``right_bnum.append(left_bnum)` `            ``# increment 'left_bnum' by 1``            ``left_bnum ``+``=` `1` `        ``# else if current character is a right bracket``        ``elif` `exp[i] ``=``=` `')'``:` `            ``# print the top element of stack 'right_bnum'``            ``# it will be the right bracket number``            ``print``(right_bnum[``-``1``], end ``=` `" "``)` `            ``# pop the top element from the stack``            ``right_bnum.pop()` `# Driver Code``if` `__name__ ``=``=` `"__main__"``:``    ``exp ``=` `"(a+(b*c))+(d/e)"``    ``n ``=` `len``(exp)` `    ``printBracketNumber(exp, n)` `# This code is contributed by``# sanjeev2552`

## C#

 `// C# implementation to``// print the bracket number``using` `System;``using` `System.Collections.Generic;` `class` `GFG``{``    ``// function to print``    ``// the bracket number``    ``static` `void` `printBracketNumber(``string` `exp,``                                   ``int` `n)``    ``{``        ``// used to print the bracket``        ``// number for the left bracket``        ``int` `left_bnum = 1;``        ` `        ``// used to obtain the bracket ``        ``// number for the right bracket``        ``Stack<``int``> right_bnum = ``new` `Stack<``int``>();``        ` `        ``// traverse the given``        ``// expression 'exp'``        ``for` `(``int` `i = 0; i < n; i++)``        ``{``            ` `            ``// if current character``            ``// is a left bracket``            ``if` `(exp[i] == ``'('``)``            ``{``                ` `                ``// print 'left_bnum',``                ``Console.Write(left_bnum + ``" "``);``                ` `                ``// Push 'left_bum' on to``                ``// the stack 'right_bnum'``                ``right_bnum.Push(left_bnum);``                ` `                ``// increment 'left_bnum' by 1``                ``left_bnum++;``            ``}``            ` `            ``// else if current character``            ``// is a right bracket``            ``else` `if``(exp[i] == ``')'``)``            ``{``    ` `                ``// print the top element``                ``// of stack 'right_bnum'``                ``// it will be the right``                ``// bracket number``                ``Console.Write(right_bnum.Peek() + ``" "``);``                ` `                ``// Pop the top element``                ``// from the stack``                ``right_bnum.Pop();``            ``}``        ``}``    ``}``    ` `    ``// Driver Code``    ``static` `void` `Main()``    ``{``        ``string` `exp = ``"(a+(b*c))+(d/e)"``;``        ``int` `n = exp.Length;``        ` `        ``printBracketNumber(exp, n);``    ``}``}` `// This code is contributed``// by Manish Shaw(manishshaw1)`

## PHP

 ``

## Javascript

 ``
Output:
`1 2 2 1 3 3`

Time Complexity : O(n).
Auxiliary Space : O(n).

My Personal Notes arrow_drop_up