第八届蓝桥杯——正则问题

文章目录:

  • 一、问题介绍
  • 二、问题分析:
    • 1.解决疑问
    • 2.例题解析
  • 三、问题思路
  • 四、完整代码
  • 总结


一、问题介绍

正则问题

考虑一种简单的正则表达式:

只由x()|组成的正则表达式。

小明想求出这个正则表达式能接受的最长字符串的长度。

例如((xx|xxx)x|(x|xx))xx 能接受的最长字符串是:xxxxxx,长度是6。

输入

— — — —

一个由x()|组成的正则表达式。输入长度不超过100,保证合法。

输出

— — — —

这个正则表达式能接受的最长字符串的长度。

例如,

输入

((xx|xxx)x|(x|xx))xx

程序应该输出

6

二、问题分析:

1.解决疑问

(1)什么是正则表达式?
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
(2)“能接受的最长字符串的长度”是什么意思?
对于题目给出的正则表达式而言,‘|’含义为或,即 ‘xx|xxx’ 表示能够接受的字符串长度为2或3,也就是说能够接受的最长字符串的长度为3。

2.例题解析

下面将例题进行一个简单讲解:
((xx|xxx)x|(x|xx))xx
1 、 ( x x ∣ x x x ) ⇒ x x x                  ( x ∣ x x ) ⇒ x x 2 、    ( x x ∣ x x x ) x ⇒ x x x x                                     3 、   ( ( x x ∣ x x x ) x ∣ ( x ∣ x x ) ) ⇒ x x x x                      4 、              ( ( x x ∣ x x x ) x ∣ ( x ∣ x x ) ) x x ⇒

你可能感兴趣的:(蓝桥杯,正则表达式,c++)