思路:由于输入的是合法的括号序列,运用栈的思想,每次进入一个左括号,一个暂存量一定是+1的,每当进入一个右括号,就得和之前的左括号进行抵消,于是这个暂存量就-1了,最大深度通过max函数求得暂存量和当前深度的最大值即可。
通俗的来说就是遍历字符串 记录最大’连续’左括号数量,遇到右括号要相应消去一个左括号数量 ,由于题目输入是合法的 所以最大’连续’左括号数量就是这个序列的深度。
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
int maxDepth=0;
int depth=0;
for(int i=0;i<s.length();++i){
if(s[i]=='('){
depth++;
maxDepth=max(maxDepth,depth);
}else{
depth--;
}
}
cout<<maxDepth<<endl;
return 0;
}