用php完成LeetCode – Evaluate Reverse Polish Notation
2017-03-07 23:34
423 查看
以我写的前一篇的‘关于php中栈的基本操作’ http://blog.csdn.net/martinhacker/article/details/60781815 完成的leetcode 的一道栈的问题,phper可以参考一下。
题目:http://www.programcreek.com/2012/12/leetcode-evaluate-reverse-polish-notation/
题目:http://www.programcreek.com/2012/12/leetcode-evaluate-reverse-polish-notation/
<?php /** * Created by PhpStorm. * User: user * Date: 07/03/2017 * Time: 21:35 */ class node{ private $value; private $pre; public function __construct($value){ $this->value = $value; $this->pre = null; } public function addPre($node){ $this->pre = $node; } public function getPre(){ return $this->pre; } public function getValue(){ return $this->value; } } class stack{ private $top; static public $size; public function __construct($value = null){ $this->top = new node($value); } public function push($value){ $current = $this->top; $newNode = new node($value); $newNode->addPre($current); $this->top = $newNode; } public function getAllStack(){ $stack = null; $current = $this->top; while ($current->getPre() != null){ $stack .= $current->getValue()."\n"; $current = $current->getPre(); } return $stack; } public function getSize(){ $current = $this->top; while (null != $current->getValue()){ self::$size++; $current = $current->getPre(); } return self::$size; } public function pop(){ $tmp = $current = $this->top; $this->top = $current->getPre(); unset($current); return $tmp->getValue(); } public function getTop(){ return $this->top->getValue(); } public function isempty(){ if (null == $this->getTop()){ return false; } return true; } } class stackReverse{ public function calculate($arrs){ $stack = new stack(); $operator = '+-*/'; foreach ($arrs as $arr){ if (!strstr($operator, $arr)){ $stack->push($arr); }else{ if ($stack->isempty()){ $a = $stack->pop(); $b = $stack->pop(); switch ($arr){ case '+': $stack->push($a + $b);break; case '-': $stack->push($a - $b);break; case '*': $stack->push($a * $b);break; case '/': $stack->push($a / $b);break; } } } } return $stack->getTop(); } } $stackReverse = new stackReverse(); $arrs = [4, 13, 5, "/", "+"]; $res = $stackReverse->calculate($arrs); var_dump($res);
相关文章推荐
- leetcode题解-150. Evaluate Reverse Polish Notation
- [leetcode]Evaluate Reverse Polish Notation
- LeetCode150—Evaluate Reverse Polish Notation
- LeetCode- Evaluate Reverse Polish Notation
- 【LeetCode-面试算法经典-Java实现】【151-Evaluate Reverse Polish Notation(计算逆波兰式)】
- LeetCode150 Evaluate Reverse Polish Notation
- leetcode 150.Evaluate Reverse Polish Notation
- leetcode----Evaluate Reverse Polish Notation
- Leetcode: Evaluate Reverse Polish Notation
- [LeetCode] Evaluate Reverse Polish Notation
- Leetcode 150 Evaluate Reverse Polish Notation (求值逆波兰表达式)
- 【leetcode刷题笔记】Evaluate Reverse Polish Notation
- leetcode - Evaluate Reverse Polish Notation
- [LeetCode] Evaluate Reverse Polish Notation
- leetcode--Evaluate Reverse Polish Notation
- 【leetcode】Evaluate Reverse Polish Notation(middle)
- 【leetcode】No.150 Evaluate Reverse Polish Notation
- leetcode之Evaluate Reverse Polish Notation
- leetcode_2 Evaluate Reverse Polish Notation 逆波兰表达式
- [leetcode]Evaluate Reverse Polish Notation