https://leetcode-cn.com/problems/valid-parenthesis-string/
思路:星号既可以匹配左括号也可以匹配右括号,由此可以记录从起始位置到当前位置的左括号的最大值和最小值,在更新过程中最大值不能低于0,且最小值不能小于0。当遍历完成后,最小值应该等于0。
class Solution {
public:
bool checkValidString(string s) {
int maxBrackets=0,minBrackets=0;
for(char ch:s)
{
if(ch=='(')
++maxBrackets,++minBrackets;
else if(ch==')')
{
minBrackets=max(minBrackets-1,0);
--maxBrackets;
if(maxBrackets<0)
return 0;
}
else
{
minBrackets=max(minBrackets-1,0);
++maxBrackets;
}
}
return minBrackets==0;
}
};