蓝桥杯2017初赛-正则问题
生活随笔
收集整理的這篇文章主要介紹了
蓝桥杯2017初赛-正则问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
考慮一種簡單的正則表達式:只由 x ( ) | 組成的正則表達式。
小明想求出這個正則表達式能接受的最長字符串的長度。
例如 ((xx|xxx)x|(x|xx))xx 能接受的最長字符串是: xxxxxx,長度是6
輸入
輸入一個由x()|組成的正則表達式。輸入長度不超過100,保證合法。
輸出
輸出這個正則表達式能接受的最長字符串的長度。
樣例輸入
((xx|xxx)x|(x|xx))xx
樣例輸出
6
代碼如下:
#include <iostream> using namespace std; #include <cstring> string s; int pos = 0;int dfs() {int temp = 0, ans = 0;int len = s.size();while (pos < len) {if (s[pos] == '(') {pos++;temp = temp + dfs();} else if (s[pos] == ')') {pos++;break;} else if (s[pos] == '|') {pos++;ans = max(ans, temp);temp = 0;} else {pos++;temp++;}}ans = max(ans, temp);return ans; }int main() {cin >> s;cout << dfs() << endl;return 0; }總結
以上是生活随笔為你收集整理的蓝桥杯2017初赛-正则问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 皮肤屏障受损怎么修复
- 下一篇: 蓝桥杯2017初赛-9数算式-dfs