您的位置:首页 > 其它

[LeetCode]Valid Parenthesis String

2017-10-11 01:22 405 查看
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:
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


public class Solution {
//在不存在'*'的情况下,只要用两个计数器就可以达到要求,现在由于还有'*'
public boolean checkValidString(String s) {
return check(s,0,0,0);
}
public boolean check(String s,int k,int l,int
93a9
r){
if(r>l) return false;
if(k==s.length()){
return l==r;
}
char ch=s.charAt(k);
if(ch=='*'){
if(check(s,k+1,l+1,r)) return true;
if(check(s,k+1,l,r+1)) return true;
if(check(s,k+1,l,r)) return true;
}else {
if(ch=='(') l++;
else r++;
if(check(s,k+1,l,r)) return true;
}
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: