1、概述
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
输入:s = “()”
输出:true
示例 2:
输入:s = “()[]{}”
输出:true
示例 3:
输入:s = “(]”
输出:false
示例 4:
输入:s = “([)]”
输出:false
示例 5:
输入:s = “{[]}”
输出:true
提示:
1 <= s.length <= 104
s 仅由括号 ‘()[]{}’ 组成
2、思路
3、解题
class Solution {/*** @param String $s* @return Boolean*/function isValid($s) {// 不断抽骨大法while (!empty($s)) {$newS = str_replace(['()', '{}', '[]'], '', $s);if ($newS == $s) {return false;} else {$s = $newS;}}return true;// $arr = [// '(' => ')',// '{' => '}',// '[' => ']',// ];// $arrL = array_keys($arr);// return $this->isValid2($s,$arr,$arrL);}// function isValid2($s, $arr, $arrL)// {// $length = strlen($s);// if ($length & 1) {// return false;// }// $s1 = '';// $sz = '';// for ($i = 0; $i < $length; $i++) {// if (empty($s1)) {// if (in_array($s[$i], $arrL)) {// $s1 = $s[$i];// } else {// return false;// }// } else {// if ($s[$i] == $arr[$s1]) {// $s1 = '';// if (!empty($sz)) {// if ($this->isValid2($sz, $arr, $arrL)) {// $sz = '';// } else {// return false;// }// }// } else {// $sz .= $s[$i];// }// }// }// if (!empty($s1)) {// return false;// }// return true;// }}
