有关栈和队--未完

class minstack
{
    public $m_data;
    public $m_min;
    function minstack(){
        $this->m_data=new stack();
        $this->min=new stack();
    }
    public function push($value){
        if($this->m_min->isempty()||$this->m_min->top()>$value)
               $this->m_min->push($value);
        $this->m_min->push($this->m_min->top());
    }
    public function pop(){
        if($this->m_data->isempty()||$this->m_min->isempty()) return -1;
        $this->m_min->pop();
        $this->m_data->pop();
    }
    public function min(){
        if($this->m_data->isempty()) return -1;
        return $this->m_min->top();
    }
}





维护一个辅助栈,当栈顶的元素不等于出栈的元素时,将元素压栈;当等于时出栈

function isTan($arr,$brr)
{
  if(false===is_array($arr)||false===is_array($brr)) return false;
  $n=count($arr);
  $m=count($brr);
  if($n==0||$m==0||$n!=$m) return false;
  $stack=new Stack();
  for($i=0,$j=0;$j<$n;){
     while($i<$n&&($stack->isEmpty()||$stack->getTop()!=$brr[$j])) {
           $stack->push($arr[$i]);
           $i++;
     }
     if($i>=$n&&($stack->getTop()!=$brr[$j]))     {
           return false;
      }
     if($stack->getTop()==$brr[$j]){
        $j++;
        $stack->pop();
    }
}
  return true;
}

4.1 栈

4.1.1 Valid Parentheses
描述
Given a string containing just the characters ’(’, ’)’, ’{’, ’}’, ’[’ and ’]’, determine if the input string is valid.
the brackets must close in the correct order, ”()” and ”()[]” are all valid but ”(]” and ”([)]” are
not.
function isValid($str)
{
  $left=array('('=>')','{'=>'}','['=>']');
  $n=strlen($str);
  $arr=array();
  for($i=0;$i<$n;$i++){
     if(array_key_exists($str[$i],$left))
          $arr[]=$left[$str[$i]];
     else{
          if(count($arr)==0||$str[$i]!=array_pop($arr))
             return false;     
      }
  }
   return true;
}


4.1.2 Longest Valid Parentheses
描述

Given a string containing just the characters ’(’ and ’)’, find the length of the longest valid (wellformed)
parentheses substring.
For ”(()”, the longest valid parentheses substring is ”()”, which has length = 2.
Another example is ”)()())”, where the longest valid parentheses substring is ”()()”, which has
length = 4.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值