正则问题
dfs
刚开始用的是栈,没有想到dfs…
#include<iostream>
#include<stack>
using namespace std;
string s;
int pos;
int dfs()
{
//ans表示到当前位置最多的x数目
//num表示暂存的x数目
int num=0,ans=0;
while(pos<s.size())
{
if(s[pos]=='(')
{
pos++;
//进入下一个dfs
num+=dfs();
}
else if(s[pos]==')')
{
pos++;
//退出dfs
break;
}
else if(s[pos]=='|')
{
//更换ans
ans=max(ans,num);
num=0;
pos++;
}
else
{
pos++;
num++;
}
}
ans=max(ans,num);
return ans;
}
int main()
{
cin>>s;
cout<<dfs()<<endl;
return 0;
}