1249. 移除无效的括号
给你一个由 '('、')' 和小写字母组成的字符串 s。
你需要从字符串中删除最少数目的 '(' 或者 ')' (可以删除任意位置的括号),使得剩下的「括号字符串」有效。
请返回任意一个合法字符串。
有效「括号字符串」应当符合以下 任意一条 要求:
空字符串或只包含小写字母的字符串
可以被写作 AB(A 连接 B)的字符串,其中 A 和 B 都是有效「括号字符串」
可以被写作 (A) 的字符串,其中 A 是一个有效的「括号字符串」
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-remove-to-make-valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
import java.util.Deque;
import java.util.LinkedList;
import java.util.Scanner;
class Solution {
    public String minRemoveToMakeValid(String s) {
        char[] str = s.toCharArray();
        Deque<Integer> stack = new LinkedList<>();
        for (int i = 0; i < str.length; ++i) {
            if (str[i] == '(') {
                stack.push(i);
            } else if (str[i] == ')') {
                if (!stack.isEmpty()) {
                    stack.pop();
                } else {
                    str[i] = 0;
                }
            }
        }
        while (!stack.isEmpty()) {
            str[stack.pop()] = 0;
        }
        StringBuilder ans = new StringBuilder();
        for (int i = 0; i < str.length; ++i) {
            if (str[i] != 0) {
                ans.append(str[i]);
            }
        }
        return ans.toString();
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            System.out.println(new Solution().minRemoveToMakeValid(in.next()));
        }
    }
}
    心之所向,素履以往 生如逆旅,一苇以航

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号