1 //dfs
2 class Solution {
3 public boolean checkValidString(String s) {
4 if(s.length() == 0) return true;
5 return dfs(s, 0, 0);
6
7 }
8
9 public boolean dfs(String s, int pos, int count){
10 if(count < 0) return false;
11 if(pos == s.length()){
12 if(count == 0){
13 return true;
14 }else{
15 return false;
16 }
17 }
18 char c = s.charAt(pos);
19 if(c == '('){
20 return dfs(s, pos+1, count+1);
21 }else if(c == ')'){
22 return dfs(s, pos+1, count-1);
23 }else{
24 return dfs(s, pos+1, count) || dfs(s, pos+1, count+1) || dfs(s, pos+1, count-1);
25 }
26 }
27 }