Problem: Write a program to determine if a string consists of properly nested parentheses
Input:
()() (()()) (() ())( ((()))
Output:
YES YES NO NO YES
Solution 1 (using stack):
<?php
$input = "(()())";
$stack = array();
$check = true;
echo $input;
echo "<br>";
if(substr($input, 0, 1) == '(')
{
for($i=0, $n=strlen($input); $i<$n; $i++)
{
if(substr($input, $i, 1) == '(')
{
array_push($stack, substr($input, $i, 1));
}
elseif(substr($input, $i, 1) == ')')
{
if(count($stack) != 0)
{
array_pop($stack);
}
else
{
$check = false;
}
}
}
}
else
{
$check = false;
}
if(count($stack) == 0)
{
echo $check ? "YES" : "NO";
}
else
{
echo "NO";
}
?>
Solution 2 (using a counter):
<?php
$input = "(()())";
$open = 0;
$check = true;
echo $input;
echo "<br>";
if(substr($input, 0, 1) == '(')
{
for($i=0, $n=strlen($input); $i<$n; $i++)
{
if(substr($input, $i, 1) == '(')
{
$open++;
}
elseif(substr($input, $i, 1) == ')')
{
if($open != 0)
{
$open--;
}
else
{
$check = false;
}
}
}
}
else
{
$check = false;
}
if($open == 0)
{
echo $check ? "YES" : "NO";
}
else
{
echo "NO";
}
?>
No comments:
Post a Comment