Есть строки состоящие из скобок вида "{", "(", ")", "}"
Необходимо проверить правильность написания открытых/закрытых скобок в строке, например:
"{ }"
"{ ( ) } ( )" - true
"{ ( } )" - false
Вот собственно в приоритетах (второй пример) и вся проблема ...
P.S. На форуме не нашел похожей темы. Если это не так, то заранее прошу прощения.
Спустя 8 часов, 5 минут, 39 секунд (13.10.2011 - 11:13) redreem написал(а):
я б рекурсией сделал. функция бежит до первой открывающейся скобки, запускает саму себя со следующего символа, бежит до закрывающейся скобки. если закрывающаяся не нашлась - значит false.
Спустя 6 часов, 55 минут, 20 секунд (13.10.2011 - 18:09) ihaveabiggun написал(а):
Мне пока что нужно сделать для строки, состоящей только из скобок этих двух видов. Никаких посторонних символов нет.
Спустя 18 минут, 9 секунд (13.10.2011 - 18:27) Winston написал(а):
Спустя 14 минут, 41 секунда (13.10.2011 - 18:41) l@pteff написал(а):
$str='()()(){}{}{}{}';
for ($i=0; $i<=strlen($str); $i++) {
$arr[]=$str[$i];
}
$arr2=array_count_values($arr);
if ($arr2['(']==$arr2[')'] && $arr2['{']==$arr2['}']) echo 'true';
else echo 'false';
Спустя 1 час, 37 минут, 25 секунд (13.10.2011 - 20:19) redreem написал(а):
такой пример не выловит ошибочную конструкцию типа ({)}
Спустя 6 часов, 18 минут, 31 секунда (14.10.2011 - 02:37) ihaveabiggun написал(а):
Спасибо большое Winston
Гуглом пользоваться умею немного, но на этот пример не набрёл
Как только появится возможность - плюсану!
Гуглом пользоваться умею немного, но на этот пример не набрёл
![wink.gif](http://phpforum.ru/html/emoticons/wink.gif)
Как только появится возможность - плюсану!
Спустя 8 часов, 20 минут, 37 секунд (14.10.2011 - 10:58) vital написал(а):
Это делается польской обратной записью.
Есть такой алгоритм, в курсе алгоритмизации вузов.
Есть такой алгоритм, в курсе алгоритмизации вузов.
Спустя 2 часа, 25 минут, 57 секунд (14.10.2011 - 13:24) SlavaFr написал(а):
некрасиво, но должно работать
function teste($string){
if(strlen($string)%2 !==0){
return false;
}
for($i=strlen($string)/2;$i>=0 && strlen($string)>0;$i--){
$string=str_replace(array('{}','()'),'',$string);
if(strlen($string)==0)return true;
}
return false;
}
Спустя 1 день, 2 часа, 40 минут, 56 секунд (15.10.2011 - 16:05) ihaveabiggun написал(а):
vital,
а можно подробнее или ссылку на ресурс с описанием?
Интересно ведь новое)
а можно подробнее или ссылку на ресурс с описанием?
Интересно ведь новое)