[leetcode]使括號有效的最少新增
阿新 • • 發佈:2018-11-24
921. 使括號有效的最少新增
給定一個由 ‘(’ 和 ‘)’ 括號組成的字串 S,我們需要新增最少的括號( ‘(’ 或是 ‘)’,可以在任何位置),以使得到的括號字串有效。
從形式上講,只有滿足下面幾點之一,括號字串才是有效的:
- 它是一個空字串,或者
- 它可以被寫成 AB (A 與 B 連線), 其中 A 和 B 都是有效字串,或者
- 它可以被寫作 (A),其中 A 是有效字串。
給定一個括號字串,返回為使結果字串有效而必須新增的最少括號數。
示例 1:
輸入:"())"
輸出:1
示例 2:
輸入:"((("
輸出:3
示例 3:
輸入:"()"
輸出:0
示例 4:
輸入:"()))(("
輸出:4
提示:
- S.length <= 1000
- S 只包含 ‘(’ 和 ‘)’ 字元。
C++解法:
class Solution {
public:
int minAddToMakeValid(string S) {
int leftbracket = 0, rightbracket = 0;
int ans = 0;
if (S.size() == 0)
{
return 0;
}
for (char c : S)
{
if (c == '(')
{
leftbracket++;
}
else if (c == ')' && leftbracket != 0)
{
leftbracket--;
}
else if (c == ')' && leftbracket == 0)
{
ans++;
}
}
if (leftbracket > rightbracket)
{
ans += (leftbracket - rightbracket);
return ans;
}
else
{
ans += (rightbracket - leftbracket);
return ans;
}
}
};