括號匹配深度

題目描述

一個合法的括號匹配序列有以下定義:

1、空串""是一個合法的括號匹配序列

2、如果"X"和"Y"都是合法的括號匹配序列,"XY"也是一個合法的括號匹配序列

3、如果"X"是一個合法的括號匹配序列,那麼"(X)"也是一個合法的括號匹配序列

4、每個合法的括號序列都可以由以上規則生成。

例如: "","()","()()","((()))"都是合法的括號序列

對於一個合法的括號序列我們又有以下定義它的深度:

1、空串""的深度是0

2、如果字符串"X"的深度是x,字符串"Y"的深度是y,那麼字符串"XY"的深度爲max(x,y) 3、如果"X"的深度是x,那麼字符串"(X)"的深度是x+1

例如: "()()()"的深度是1,"((()))"的深度是3。牛牛現在給你一個合法的括號序列,需要你計算出其深度。

輸入描述:

輸入包括一個合法的括號序列s,s長度length(2 ≤ length ≤ 50),序列中只包含'('和')'。

輸出描述:

輸出一個正整數,即這個序列的深度。

示例1

輸入

(())

輸出

2

 

換句話說就是一個括號裏重了多少層括號,並列的算一層。

 

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

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

 

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