问题:
知识补充:
1. 正则表达式的计算
①括号代表优先计算,②或符号代表二选一。
比如给的例子:((xx|xxx)x|(x|xx))xx
2. 字符串的语法问题:
string是字符串的类型,使用的时候也使像字符一样使用,加入定义string str,那么使用的时候要写成str[]
思考:
妈呀一开始我不会算正则表达式的最长字符,后来看了一下解释,就想起来了。一开始是想到哪个逆波兰计算的问题,当时是用栈来写的,但是写的很麻烦。用递归又是在想不明白啊。
后来查阅了资料,把他当作树来看(树是一种思想,在很多地方都能用上),
具体分析看这一篇文章递归的一些问题-CSDN博客。
语法点:
其次就是一个等号是赋值,两个等号才是相等条件!!!
不然有可能会报这个错误 [Error] could not convert 'str.std::basic_string<_CharT, _Traits, _Alloc>::operator=<char, std::char_traits<char>, std::allocator<char> >(40)' from 'std::basic_string<char>' to 'bool'
易错点:
代码:
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
string str; //注意
int k=0;
int dfs()
{
int res=0;
while(k<str.size())
{
if(str[k]=='(')
{
k++;
res+=dfs();
k++;
}
else if(str[k]=='|')
{
k++; //
res=max(res,dfs());
}
else if(str[k]==')')
{
break;
}
else if(str[k]=='x')
{
k++;
res++;
}
}
return res;
}
int main()
{
cin >> str;
printf("%d",dfs());
}
标签:std,1225,string,int,xx,蓝桥,正则,str,include
From: https://blog.csdn.net/2201_75486799/article/details/137127383