LeetCode 0301. Remove Invalid Parentheses Solution in Java, Python, C++, JavaScript, Go & Rust | Explanation + Code

CoderIndeed
0
0301. Remove Invalid Parentheses

Description

Given a string s that contains parentheses and letters, remove the minimum number of invalid parentheses to make the input string valid.

Return a list of unique strings that are valid with the minimum number of removals. You may return the answer in any order.

 

Example 1:

Input: s = "()())()"
Output: ["(())()","()()()"]

Example 2:

Input: s = "(a)())()"
Output: ["(a())()","(a)()()"]

Example 3:

Input: s = ")("
Output: [""]

 

Constraints:

  • 1 <= s.length <= 25
  • s consists of lowercase English letters and parentheses '(' and ')'.
  • There will be at most 20 parentheses in s.

Solutions

Solution 1

PythonJavaC++Go
class Solution: def removeInvalidParentheses(self, s: str) -> List[str]: def dfs(i, l, r, lcnt, rcnt, t): if i == n: if l == 0 and r == 0: ans.add(t) return if n - i < l + r or lcnt < rcnt: return if s[i] == '(' and l: dfs(i + 1, l - 1, r, lcnt, rcnt, t) elif s[i] == ')' and r: dfs(i + 1, l, r - 1, lcnt, rcnt, t) dfs(i + 1, l, r, lcnt + (s[i] == '('), rcnt + (s[i] == ')'), t + s[i]) l = r = 0 for c in s: if c == '(': l += 1 elif c == ')': if l: l -= 1 else: r += 1 ans = set() n = len(s) dfs(0, l, r, 0, 0, '') return list(ans)(code-box)

Post a Comment

0Comments

Post a Comment (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Check Now
Accept !