задача на PHP

Тема в разделе 'PHP', создана пользователем Avrel, 27 окт 2011.

  1. Avrel Новичок

    Приветствую всех. Помогите пожалуйста с реализацией данной задачи : Есть два вида скобок, {}, (), дана входная строка, состоящая из этих символов, надо определить, корректна ли строка, т.е. для каждой закрывающей скобки должна быть своя открывающая.
    <?php
    assert(isCorrect('') === true);
    assert(isCorrect('()') === true);
    assert(isCorrect('{()}') === true);
    assert(isCorrect('{()}{}') === true);
    assert(isCorrect('(())') === true);
    assert(isCorrect('{({({({()})})})}') === true);
    assert(isCorrect('{(})') === false);;
    ?>
    Задача - реализовать на php функцию isCorrect. Проверьте по указанным assert-ам, что решение проходит.
    Заранее, спасибо за помощь.
  2. XmP ADD ebx, 110h

    PHP:
    <?php
    function isCorrect($s) {
        
    $para = array(
            
    '(' => ')',
            
    '{' => '}'
        
    );
        
    $para array_flip($para);
        
    $stack = array();
        
    $stack_size 0;
        for(
    $i=0;$i<strlen($s);$i++)
        {
            if (
    in_array($s{$i},array_values($para)))
                
    $stack[$stack_size++] = $s{$i};
            else if (
    in_array($s{$i},array_keys($para)))
            {
                
    $last $stack_size$stack[$stack_size-1] : '';
                if (
    $last!=$para[$s{$i}])
                    return 
    false;
                else
                    unset(
    $stack[--$stack_size]);
            }
        }
        return 
    count($stack)==0;
    }

    ?>

Поделиться этой страницей