Remove Invalid Parentheses
题目描述
Remove the minimum number of invalid parentheses in order to make the input string valid. Return all possible results.
Note: The input string may contain letters other than the parentheses ( and ).
Example 1:
Input: “()())()”
Output: [“()()()”, “(())()”]
Example 2:
Input: “(a)())()”
Output: [“(a)()()”, “(a())()”]
Example 3:
Input: “)(“
Output: [“”]
解题思路
本题要在一个不合法的字符串中,去除最少的左右括号使字符串变得合法。
将给定字符串及其子字符串作为一个状态进行BFS,逐渐通过去掉括号的方式进行状态转移,为了避免所有括号都去掉一遍,我对去括号的方式做了一点改进,如果左括号多则只去左括号,如果右括号多则只去右括号。当发现合法的字符串时,将found置为true,使得不会再有字符串添加进队列,保证了去除最少的括号这一条件。
源代码
1 | class Solution { |