題目描述
一個合法的括號匹配序列有以下定義:
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;
}