php實現判斷表示式中括號等是否匹配
阿新 • • 發佈:2018-12-07
<?php /** * title: 判斷表示式中括號是否匹配 * Description: () 匹配 )(不匹配 利用壓棧和出棧 * 使用陣列來模擬進棧和出棧array_push() array_pop() * @author Liu */ header("Content-Type: text/html;charset=utf-8"); function isValid($expstr) { $temp = []; for ($i=0; $i<strlen($expstr); $i++) { $ch = $expstr[$i]; switch($ch) { case '(': array_push($temp, '('); break; case ')': if (empty($temp) || array_pop($temp) != '(') { return "缺少左括號("; } break; case '[': array_push($temp, '['); break; case ']': if (empty($temp) || array_pop($temp) != '[') { return "缺少左中括號["; } break; case '{': array_push($temp, '{'); break; case '}': if (empty($temp) || array_pop($temp) != '{') { return "缺少左大括號{"; } break; } } return empty($temp) == true ? "表示式匹配" : "表示式不匹配"; } //舉個例子 $expstrA = "{(6*4)[4*5-1(2*5)]}"; $expstrB = "(1+3(6*4)-(2+3))()"; $expstrC = "(1+3(6*4)-(2+3)))"; echo isValid($expstrA);//輸出表達式匹配 echo "<br>"; echo isValid($expstrB);//輸入表示式匹配 echo "<br>"; echo isValid($expstrC);//輸入缺少左括號( ?>