- 有效的括号字符串
题目: 给定一个只包含三种类型字符的字符串:'(',')'和 '*', 编写一个函数来检查该字符串是否有效。 我们通过以下规则定义字符串的有效性:
1.任何左括号 '('必须有一个相应的右括号')'。
2.任何右括号 ')' 必须有一个相应的左括号'('。
3.左括号'(' 必须在相应的右括号 ')' 之前。
4.*可以被视为单个右括号')'或单个左括号'('或空字符串。
5.空字符串也有效
思路:l(left)为必须被右括号匹配的左括号数量,cp(couple)为前面左括号和星号数量
解题:
class Solution {
public:
bool checkValidString(string s) {
int len=s.size();
int l=0, cp=0;
for (int i=0; i<len; i++) {
if (s[i]=='(') {
l++;
cp++;
} else if (s[i]=='*') {
if (l>0) {
l--;
}
cp++;
} else {
if (l>0) l--;
cp--;
if (cp<0) return false;
}
}
if (l==0)
return true;
else
return false;
}
};
网友评论