题意

描述

给定一个只包括 '('')''{''}''['']' 的字符串,判断字符串是否有效。

有效字符串需满足:

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

注意空字符串可被认为是有效字符串。

示例

示例 1:

输入: "()"
输出: true

示例 2:

输入: "()[]{}"
输出: true

示例 3:

输入: "(]"
输出: false

示例 4:

输入: "([)]"
输出: false

示例 5:

输入: "{[]}"
输出: true

解题

代码实现

class Solution {

    /**
     * @param String $s
     * @return Boolean
     */
    function isValid($s) {
        if (empty($s)) {
            return true;
        }
        $arr = array(
            "(" => ")",
            "{" => "}",
            "[" => "]",
        );
        $end = [];
        for ($i = 0; $i < strlen($s); $i++) {
            if (isset($arr[$s[$i]])) {
                $end[] = $arr[$s[$i]];
            } elseif (end($end) == $s[$i]){
                array_pop($end);
            } else {
                return false;
            }
        }
        return count($end) === 0;
    }
}

解题思路

如果属于左侧括号,则向数组end中插入对应的右侧括号;如果属于右侧括号则查找end数组中是否有一样的,如果有则删去
类似于用栈实现


本文由 一切随风 创作,可自由转载、引用,但需署名作者且注明文章出处。

10 条评论

  1. epcxtbwdxy
    epcxtbwdxy

    007之杀人执照

  2. clxgpuegeo
    clxgpuegeo

    钢之炼金术师完结篇最后的炼成

  3. ejlhwjqrry
    ejlhwjqrry

    这个杀手不太冷静

  4. kkdbnyqpbz
    kkdbnyqpbz

    打怪

  5. jgowerzfuu
    jgowerzfuu

    狮子王国

  6. scsccwjdxw
    scsccwjdxw

    只有我能喜欢你

  7. zdqbzalznh
    zdqbzalznh

    饮食男女好远又好近

  8. aigietfeaw
    aigietfeaw

    我何爷爷

  9. opxbpabckp
    opxbpabckp

    逆途

  10. yiewalnlau
    yiewalnlau

    狐妖传说

添加新评论