天天看點

試解leetcode算法題--有效括号最少添加

<題目描述>

給定一個由 ‘(’ 和 ‘)’ 括号組成的字元串 S,我們需要添加最少的括号( ‘(’ 或是 ‘)’,可以在任何位置),以使得到的括号字元串有效。

<原題連結>

https://leetcode-cn.com/problems/minimum-add-to-make-parentheses-valid/

<理明思路>

對字元串S進行周遊,另外使用一個list來儲存不成對括号個數(也就是左括号個數),而無法比對到左括号的右括号個數直接記錄在ans變量中。最終ans數值與list中括号個數值之和即為需要補充的括号個數。

<樣例代碼>

class Solution:
    def minAddToMakeValid(self, S):
        """
        :type S: str
        :rtype: int
        """
        ans = 0
        com_arr = []
        for i in S:
            if i=='(':
                com_arr.append(i)
            elif i==')':
                if len(com_arr)==0:
                    ans += 1
                else:
                    com_arr.pop()

        ans += len(com_arr)
        return ans