hdu 6170 正则表达式
来源:互联网 发布:韩国网络电视成人直播 编辑:程序博客网 时间:2024/06/06 03:51
题意:给你一个正则表达式(伪),唯一不同其中.*代表 不是 *个. 而是.先匹配再星
思路:场上dp过了(瞎分类讨论不知道wa了多少次。。),试图用正则来着但是不会写。。。下来学习一下姿势。。
首先regex这个c++11的库函数就不多说了,知道怎么构造正则和匹配就可以了。重要的还是正则姿势。
实际上正解的就是把 .* 换成(.)\1*,
匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)\1”匹配两个连续的相同字符。
(百度百科),那么这里直接利用这个就能实现题意得要求了。PS.姿势水平还要提升一个。附上正则的链接 正则表达式(百度百科)
PPS.跑的贼慢。。。大概做题是用不上了。。。
代码:
#include<bits/stdc++.h>using namespace std;#define X first#define Y second#define PB push_back#define MP make_pair#define MEM(x,y) memset(x,y,sizeof(x));#define bug(x) cout<<"bug"<<x<<endl;typedef long long ll;const int maxn =5e5+100;typedef pair<int,int> pii;string s1,s2;int main(){ int t; std::ios::sync_with_stdio(false); cin>>t; string abc; abc="(.)\\1*"; while(t--){ cin>>s1>>s2; string tmp; int n=s2.size(); for(int i=0;i<n;i++){ if(s2[i-1]=='.'&&s2[i]=='*') continue; if(i+1<n&&s2[i]=='.'&&s2[i+1]=='*') tmp+=abc; else tmp+=s2[i]; } regex R(tmp); if(regex_match(s1,R)) cout<<"yes\n"; else cout<<"no\n"; } return 0;}
匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)\1”匹配两个连续的相同字符。
阅读全文
0 0
- hdu 6170 正则表达式
- hdu 6170 正则表达式 dp
- hdu 6170 正则表达式应用
- hdu 6170(正则表达式)
- HDU 6170 正则表达式匹配
- HDU--2206 -- IP的计算 [正则表达式]
- 2017多校联合第9场1010 Two String/hdu 6170(正则表达式/dp)
- 【正则表达式】正则表达式
- hdu 2279 File Search Tool(java正则表达式使用)
- HDU 1039 Easier Done Than Said?(正则表达式)
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- HDU 6168 Numbers
- Ajax实现五级联动--(一)
- Oracle、Mysql、MS sql中关于模糊查询问题
- Leetcode-210: Course Schedule II
- java中的this关键字
- hdu 6170 正则表达式
- (C++)unordered_map 与 map 的对比
- [pattest]1067. 试密码(20)
- 知历史,才可图未来 ——新书《未来简史》解读
- IO流复制多级文件
- 【Component】关于Ionic中的Component
- HDU-2017 多校训练赛9-1010-Two strings
- 结构体的使用
- 职业生涯系列