题解 AT3602 【AKIBA】
你们 python java 都用 ,不要以为 c++ 没有正则表达式了!
c++ 中的正则表达式需要包含头文件 <regex>,然后就可以声明某个正则表达式:
regex name(^value$); // 其中^与$均可省略,^代表开始,$代表结束
如:
regex reg("^abc+$");
那么这里可以匹配的字符串就有:
abc
abcc
abccc
abcccc
abccccc
abcccccc
abccccccc
以及其他前面ab并且后面有大于等于1个的c
那么正则表达式还有一个重要字符 ?,它代表前面括号中(如果没有括号就是前一个字符)的字符串有也可以没有,所以对于正则表达式 ab(cc)?, abcc 与 ab 均可以匹配,而 abc 则不能匹配。
那么如何判断某个字符串与某个正则表达式匹配?我们需要用到函数 regex_match,其函数通常为两个,第一个是需要匹配的字符串,第二个是正则表达式,返回值为 bool 类型,匹配成功返回 true,否则返回 false。
其实正则表达式还有很多其他符号与函数,可以自行百度。
所以本题其实可以用正则表达式做:
#include <regex>
#include <iostream>
#include <string>
using namespace std;
int main()
{
regex reg("^A?KIHA?BA?RA?$");
string st;
cin >> st;
if(regex_match(st, reg))
{
cout << "YES\n";
}
else
{
cout << "NO\n";
}
return 0;
}
码字不易,求赞!

浙公网安备 33010602011771号