友情提示:此篇文章大约需要阅读 2分钟45秒,不足之处请多指教,感谢您的阅读。 订阅本站
题目
给定一个只包括'(',')','{','}','[',']'
的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 注意空字符串可被认为是有效字符串。
示例 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);
发表回复