1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| 思路: 思路与解法2相同,将array_shift改为array_pop,提高性能 array_pop() 的性能更优,时间复杂度:O(1),只需要移除数组最后一个元素,不需要重新索引数组 array_shift() 性能较差,时间复杂度:O(n),移除第一个元素后,PHP 会自动将数组中剩余元素的键值向前移动(重新索引),这是一个线性操作,耗费时间随数组长度增加。
代码: function isValid($s) { $map = [ ')' => '(', ']' => '[', '}' => '{', ];
$len = strlen($s);
$arr = []; for ($i = 0; $i < $len; $i++) { if (isset($map[$s[$i]])) { $f = array_pop($arr);
if (null === $f) { return false; }
if ($f !== $map[$s[$i]]) { return false; } } else { $arr[] = $s[$i]; } }
if ($arr) { return false; }
return true; }
|