سلام استاد من این کد رو نوشتم میخوام اشکالش رو بگیرم. سوالش این هست
رشتهای شامل کاراکترهای (
، )
، {
، }
، [
، ]
داریم. میخواهیم ببینیم پرانتزگذاری در این رشته معتبر است یا خیر.
این رشته در صورتی معتبر است که:
- هر پرانتز بازی با پرانتز مربوط به خودش بسته شود.
- پرانتزهای باز با ترتیب درستی بسته شوند.
ورودی
در یک خط از ورودی استاندارد، رشتهی موردنظر وارد میشود. توجه داشته باشید که این رشته میتواند خالی باشد.
خروجی
در یک خط از خروجی استاندارد، در صورتی که پرانتزگذاری به درستی صورت گرفته است، YES
و در غیر این صورت، NO
را چاپ کنید.
<?php
$str=readline();
$i=0;
$stack=array();
$top=-1;
$flag=true;
while ($i<strlen($str)){
if ($str[$i]=='(' || $str[$i]=='{' ||$str[$i]=='[')
{
$top++;
$stack[$top]=$str[$i];
}
else {
if ($top==-1) {echo 'NO'; $flag=false;break; }
if (($str[$i]==')' && $stack[$top]=='(') ||($str[$i]=='}' && $stack[$top]=='{') ||($str[$i]==']' && $stack[$top]=='['))
$top--;
else{
echo 'NO'; $flag=false;break; }
}
$i++;
}
if ($flag==true && $top==-1)
echo 'YES';
else
echo 'NO';
وقتی ورودی (( میدم باید جواب noباشه ولی به جای یک no دوتا چاپ میکنه اگر میشه اشکالش رو بهم بگید ممنون