Skip to main content

Command Palette

Search for a command to run...

Finding out all the expressions within brackets

Published
0 min read
A
I am a web developer from Navi Mumbai. Mainly dealt with LAMP stack, now into Django and getting into Laravel and Cloud. Founder of nerul.in and gaali.in

Finding out all the expressions within brackets : I was actually asked to find out the smallest bracket expression within an expression, I have omitted the function to check for the smallest string and omitting spaces within the expression.

This was actually an interview question at a startup in Seawoods, Navi Mumbai.

Given an expression like ((a + b * d) * (x / 2)) * (1 + (y + (x - 2) / 10)) the smallest expression within brackets is x / 2 and x - 2. If we can find all the expressions within the brackets, then finding the smallest ones is as simple enough by finding the length after removing the spaces.

<?php
$s = "((a + b * d) * (x / 2)) * (1 + (y + (x - 2) / 10))";
$b = [];
$j = 0;
$stack = [];

for ($i = 0; $i < strlen($s); $i++)
{   
    if ($s[$i] == '(')
    {       
        $b[++$j] = '';
    }
    elseif ($s[$i] == ')')
    {       
        $stack[] = ($b[$j--] .= ')');   
    }
    for ($k = 1; $k <= $j; $k++)
    {
        $b[$k] .= $s[$i];
    }
}
echo $s.PHP_EOL;
print_r($stack);
echo PHP_EOL;
?>
php brackets.php 
((a + b * d) * (x / 2)) * (1 + (y + (x - 2) / 10))
Array
(
    [0] => (a + b * d)
    [1] => (x / 2)
    [2] => ((a + b * d) * (x / 2))
    [3] => (x - 2)
    [4] => (y + (x - 2) / 10)
    [5] => (1 + (y + (x - 2) / 10))
)