有效的括号:
PHP 12ms:
本解法选择使用栈实现。首先判断$s[$i]的值是不是左括号,如果是就进栈,不是的话,将$i-1位置的字符出栈,记录出栈的字符并判断是否与$i位置的括号配对,不配对就返回false。时间复杂度O(S),空间复杂度O(n)。
class Solution {
function isValid($s) {
$stack = [];
for($i = 0;$i < strlen($s);$i++){
if($s[$i]=='('||$s[$i]=='{'||$s[$i]=='['){
$stack[$i] = $s[$i];
}else{
$left = array_pop($stack);
switch($s[$i]){
case ')':
if($left != '('){
return false;
}
break;
case '}':
if($left != '{'){
return false;
}
break;
case ']':
if($left != '['){
return false;
}
break;
}
}
}
if(empty($stack)){
return true;
}else{
return false;
}
}
}
本题首选哈希表方法,效率会更高。