题意:
解题思路:
思路: 1. 遇到左括号就压栈 2. 遇到右括号,就弹出栈顶元素与当前元素对应的值是不是相等 3. 最后判断栈是否为空,空则为true,反之false
PHP代码实现:
class Solution { function isValid($s) { $data = [')' => '(', '}' => '{', ']' => '[']; $stack = new SplStack; for ($i = 0; $i < strlen($s); $i++) { if (isset($data[$s[$i]])) { if ($stack->isEmpty()) return false; $ele = $stack->pop(); if ($ele != $data[$s[$i]]) { return false; } } else { $stack->push($s[$i]); } } if (!$stack->isEmpty()) return false; return true; } function isValidArr($s) { if (!$s) return true; $data = [')' => '(', '}' => '{', ']' => '[']; $stack = []; for ($i = 0; $i < strlen($s); $i++) { if (isset($data[$s[$i]])) { if (empty($stack)) return false; $ele = array_pop($stack); if ($data[$s[$i]] != $ele) { return false; } } else { array_push($stack, $s[$i]); } } if (!empty($stack)) return false; return true; }}
GO代码实现:
func isValid(s string) bool { hash := map[byte]byte{')':'(', ']':'[', '}':'{'} stack := make([]byte, 0) if s == "" { return true } for i := 0; i < len(s); i++ { if s[i] == '(' || s[i] == '[' || s[i] == '{' { stack = append(stack, s[i]) } else if len(stack) > 0 && stack[len(stack) - 1] == hash[s[i]] { stack = stack[:len(stack) - 1] } else { return false } } return len(stack) == 0}