678. Valid Parenthesis String
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 }