博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #425 (Div. 2) - B
阅读量:5967 次
发布时间:2019-06-19

本文共 1917 字,大约阅读时间需要 6 分钟。

 

题目链接:http://codeforces.com/contest/832/problem/B

题意:给定一个好字母集合(只有小写字母,除了这些外其余都是坏字母集合),给定一个匹配模式串,

模式串只包含小写字母,'*','?'; 其中'?'可以替换成“好字母集合”中的任意一个字母 

‘*’可以替换成空字符串坏字母组成的字符串

然后给你n个字符串,问你这n个字符串哪些满足给定的匹配模式。 

思路:按照题意模拟,或者直接写个正则表达式来匹配即可。

#define _CRT_SECURE_NO_DEPRECATE#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef long long int LL;const int MAXN = 1e5 + 24;const int INF = 0x3f3f3f3f;const int mod = 1e9 + 7;char gchar[26], pattern[MAXN], str[MAXN];int vis[26];int main(){#ifdef kirito freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout);#endif int n, slen, plen, glen; while (~scanf("%s", gchar)){ scanf("%s", pattern); scanf("%d", &n); plen = strlen(pattern); glen = strlen(gchar); bool flag = false; for (int i = 0; i < plen; i++){ if (pattern[i] == '*'){ flag = true; break; } } memset(vis, 0, sizeof(vis)); for (int i = 0; i < glen; i++){ vis[gchar[i] - 'a'] = 1; } for (int i = 1, j, k; i <= n; i++){ scanf("%s", str); slen = strlen(str); bool res = true; if (plen - 1 == slen&&flag){ int pos = 0; for (j = 0; j < slen&&res; j++, pos++){ if (pattern[pos] == '*'){ //换成空字符串 j--; } else if (pattern[pos] == '?'){ if (!vis[str[j] - 'a']){ res = false; } } else{ if (pattern[pos] != str[j]){ res = false; } } } } else if (plen <= slen){ int pos = 0, pslen = slen - plen; if (pslen&&!flag){ res = false; } for (j = 0; j < slen&&res; j++, pos++){ if (pattern[pos] == '*'){ //换成坏字母组成的字符串 for (k = j; k <= j + pslen; k++){ if (vis[str[k] - 'a']){ res = false; break; } } j = j + pslen; } else if (pattern[pos] == '?'){ if (!vis[str[j] - 'a']){ res = false; } } else{ if (pattern[pos] != str[j]){ res = false; } } } } else{ res = false; } printf(res ? "YES\n" : "NO\n"); } } return 0;}

 

转载于:https://www.cnblogs.com/kirito520/p/7246812.html

你可能感兴趣的文章
BaaS API 设计规范
查看>>
bootloader功能介绍/时钟初始化设置/串口工作原理/内存工作原理/NandFlash工作原理...
查看>>
iOS开发UI篇—Quartz2D使用(矩阵操作)
查看>>
C++ 构造函数与析构函数
查看>>
定时压缩log日志文件
查看>>
秋无痕 Windows XPSP3 集成安装增强版 V201306
查看>>
IT男成都租房记
查看>>
博为峰JavaEE技术文章 ——MyBatis Provider之@SelectProvider SQL方法
查看>>
Java核心API -- 9(异常)
查看>>
apache 编译报错:undefined reference to `apr_array_clear'
查看>>
图像识别DM8127开发攻略——UBOOT的移植说明
查看>>
ubuntu 下升级docker版本
查看>>
EXSi5.5安装篇
查看>>
开始记录吧
查看>>
windows下用php开发类似百度文库应用需要的工具和问题
查看>>
css模拟select设置高度在ie67下有效(也可作为去除边框)
查看>>
MySQL双主(master-master)补充
查看>>
ldap添加自定义字段
查看>>
Vertically aligning HTML
查看>>
Linux之cut命令
查看>>