有效的括号字符串
给定一个只包含三种字符的字符串:( ,) 和 *,写一个函数来检验这个字符串是否为有效字符串。有效字符串具有如下规则:
- 任何左括号 ( 必须有相应的右括号 )。
- 任何右括号 ) 必须有相应的左括号 ( 。
- 左括号 ( 必须在对应的右括号之前 )。
- * 可以被视为单个右括号 ) ,或单个左括号 ( ,或一个空字符串。
- 一个空字符串也被视为有效字符串。
示例1:
输入: "()"
输出: True
1
2
2
示例2:
输入: "(*)"
输出: True
1
2
2
示例3:
输入: "(*))"
输出: True
1
2
2
注意:
- 字符串大小将在 [1,100] 范围内。
// 正向把所有星号转成左括号,反向把所有星号转成右括号,统计左括号和右括号的数量,只要有一个小于0,说明不匹配,也就不是一个有效字符串
var checkValidString = function (s) {
const n = s.length;
let l = 0, r = 0;
for (let i = 0; i < n; i++) {
l += s[i] === ')' ? -1 : 1;
r += s[n - i - 1] === '(' ? -1 : 1;
if (l < 0 || r < 0) return false;
}
return true;
};
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
上次更新: 2022/09/15, 17:09:42