Debug客栈
做一个爱分享的程序猿
Debug客栈
LeetCode PHP 有效的括号

友情提示:此篇文章大约需要阅读 2分钟41秒,不足之处请多指教,感谢你的阅读。订阅本站

题目

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

有效字符串需满足:

  • 左括号必须用相同类型的右括号闭合。
  • 左括号必须以正确的顺序闭合。
  • 注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"
输出: true

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

示例 3:
输入: "(]"
输出: false

示例 4:
输入: "([)]"
输出: false

示例 5:
输入: "{[]}"
输出: true

解析

这个题解是根据递归 + PHP 字符串功能函数 str_replace 函数来进行字符替换实现,具体实现如下:

  • 将传入字符串进行对应括号组合查找,若查找到则替换为空串,计算替换次数;
  • 判断替换次数,若没有替换进行判断此字符串是否为空,若为空则代表此字符串符合规则,否者则不符合;
  • 若替换次数不为0,则代表已经替换了一对,将剩余字符串再次传入该函数进行递归操作,直到没有替换的次数为止,并进行第二步判断是否符合规则,返回其结果。
str_replace 函数说明
str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] ) : mixed

该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果。返回结果为字符串类型。

代码

<?php
class Solution {
    /**
     * @param String $s
     * @return Boolean
     */
    function isValid($s) {
        $s = str_replace(['()', '[]', '{}'], '', $s, $count);
        if($count == 0){
            return strlen($s)==0;
        }else{
            return $this->isValid($s);
        }
    }
}

$str = '()[]}';
echo(new Solution())->isValid($str);

这是我刷算法的 Github 仓库,喜欢的话可以给我一个 star,谢谢。

赞赏
本文链接:https://www.debuginn.cn/5081.html
本文采用: CC BY-NC-SA 3.0 Unported 协议进行许可,转载请保留此文章链接
相关链接: 首页  |  引导页  |  赞助本站  |  @QQ  |  @Mail  |  @微博  |  @云+社区  |  @推特  |  @Github
媒体矩阵: 哔哩哔哩  |  Youtube  |  网易云音乐  |  欢迎订阅我的 Telegram频道 @Debug客栈

发表评论

textsms
account_circle
email

Debug客栈

LeetCode PHP 有效的括号
题目 给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空…
扫描二维码继续阅读
2020-02-27