[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка скобок
ihaveabiggun
Помогите, пожалуйста, решить задачку, господа знатоки.
Есть строки состоящие из скобок вида "{", "(", ")", "}"
Необходимо проверить правильность написания открытых/закрытых скобок в строке, например:

"{ }"
"{ ( ) } ( )" - 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 написал(а):
Учимся пользоваться гуглом smile.gif
ТЫЦ

Спустя 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
Как только появится возможность - плюсану!

Спустя 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,
а можно подробнее или ссылку на ресурс с описанием?
Интересно ведь новое)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.