缺失的括號

題目描述

一個完整的括號字符串定義規則如下:

1、空字符串是完整的。

2、如果s是完整的字符串,那麼(s)也是完整的。

3、如果s和t是完整的字符串,將它們連接起來形成的st也是完整的。

例如,"(()())", ""和"(())()"是完整的括號字符串,"())(", "()(" 和 ")"是不完整的括號字符串。

牛牛有一個括號字符串s,現在需要在其中任意位置儘量少地添加括號,將其轉化爲一個完整的括號字符串。請問牛牛至少需要添加多少個括號。

輸入描述:

輸入包括一行,一個括號序列s,序列長度length(1 ≤ length ≤ 50). s中每個字符都是左括號或者右括號,即'('或者')'.

輸出描述:

輸出一個整數,表示最少需要添加的括號數

示例1

輸入

複製

(()(()

輸出

複製

2

 

只是單個括號,記錄非法右括號和多餘的左括號次數。

如果是多個括號,就要藉助棧來求解

 

#include<iostream>
#include<string>
using namespace std;

int main()
{
    int right = 0;
    int left = 0;
    int ans  = 0;
    string str;
    cin >> str;
    for(int i = 0; i < str.size(); ++i)
    {
        if(str[i] == '(')
        {
            ++left;
        }
        else
        {
            if(left > 0)
            {
                --left;
            }
            else
            {
                ++ans;
            }
        }
    }
    if(left > 0)
        ans += left;
    cout << ans << endl;
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章