1、概述

给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。

示例 1:

输入:s = “()”
输出:true
示例 2:

输入:s = “()[]{}”
输出:true
示例 3:

输入:s = “(]”
输出:false
示例 4:

输入:s = “([)]”
输出:false
示例 5:

输入:s = “{[]}”
输出:true

提示:

1 <= s.length <= 104
s 仅由括号 ‘()[]{}’ 组成

2、思路

3、解题

  1. class Solution {
  2. /**
  3. * @param String $s
  4. * @return Boolean
  5. */
  6. function isValid($s) {
  7. // 不断抽骨大法
  8. while (!empty($s)) {
  9. $newS = str_replace(['()', '{}', '[]'], '', $s);
  10. if ($newS == $s) {
  11. return false;
  12. } else {
  13. $s = $newS;
  14. }
  15. }
  16. return true;
  17. // $arr = [
  18. // '(' => ')',
  19. // '{' => '}',
  20. // '[' => ']',
  21. // ];
  22. // $arrL = array_keys($arr);
  23. // return $this->isValid2($s,$arr,$arrL);
  24. }
  25. // function isValid2($s, $arr, $arrL)
  26. // {
  27. // $length = strlen($s);
  28. // if ($length & 1) {
  29. // return false;
  30. // }
  31. // $s1 = '';
  32. // $sz = '';
  33. // for ($i = 0; $i < $length; $i++) {
  34. // if (empty($s1)) {
  35. // if (in_array($s[$i], $arrL)) {
  36. // $s1 = $s[$i];
  37. // } else {
  38. // return false;
  39. // }
  40. // } else {
  41. // if ($s[$i] == $arr[$s1]) {
  42. // $s1 = '';
  43. // if (!empty($sz)) {
  44. // if ($this->isValid2($sz, $arr, $arrL)) {
  45. // $sz = '';
  46. // } else {
  47. // return false;
  48. // }
  49. // }
  50. // } else {
  51. // $sz .= $s[$i];
  52. // }
  53. // }
  54. // }
  55. // if (!empty($s1)) {
  56. // return false;
  57. // }
  58. // return true;
  59. // }
  60. }