Valid Parenthesis String
Given a string containing only three types of characters: '(', ')' and
'*', write a function to check whether this string is valid. We define
the validity of a string by these rules:
Example 1:
Try it on Leetcode
Calculate left parenthesis and also right parenthesis and star separately. If others are lesser than 0 then break. Else if left is negative then bring it up to 0.
- Any left parenthesis
'('
must have a corresponding right parenthesis')'
. - Any right parenthesis
')'
must have a corresponding left parenthesis'('
. - Left parenthesis
'('
must go before the corresponding right parenthesis')'
. '*'
could be treated as a single right parenthesis')'
or a single left parenthesis'('
or an empty string.- An empty string is also valid.
Example 1:
Input: "()" Output: True
Example 2:
Input: "(*)" Output: True
Example 3:
Input: "(*))" Output: True
Note:
- The string size will be in the range [1, 100].
class Solution {
public boolean checkValidString(String s) {
int left = 0, rem = 0;
for (char ch: s.toCharArray()) {
left += ch == '(' ? 1 : -1;
rem += ch != ')' ? 1 : -1;
if (rem < 0) break;
left = Math.max(left, 0);
}
return left == 0;
}
}
Try it on Leetcode
Calculate left parenthesis and also right parenthesis and star separately. If others are lesser than 0 then break. Else if left is negative then bring it up to 0.
Comments
Post a Comment