Petya and Exam - CodeForces 832B - Virtual Judge (csgrandeur.cn)


题意:给你一个好的字符串和一个模式串,模式串里面的?可以替换成任意的好的字符,*可以替换成0个字符或者是一个坏的字符串,给你n个操作,每次给出一个字符串,问你可不可以将模式串变成这个字符串。


code:

​
​
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
string a,b;
int n,idx,lenb;
map<char,bool> st;void solve()
{string s;cin>>s;int len=s.size();if(idx==0&&lenb!=len)//没有*且两串不相等{cout<<"NO"<<endl;return;}if(idx==1&&lenb-len>1)//有*两串相差大于1{cout<<"NO"<<endl;return;}int l=len-lenb+1,ib=0,is=0;//l的设定非常巧妙,给定串小了,l=-1,在判断*号直接不进入循环,跳出,相等,说明要改变,进入循环,删掉while(is<len){if(b[ib]!='?'&&b[ib]!='*'){if(b[ib]!=s[is]){cout<<"NO"<<endl;return;}}else if(b[ib]=='?'){if(st[s[is]]==false){cout<<"NO"<<endl;return;}}else if(b[ib]=='*'){for(int j=0;j<l;j++){if(st[s[is+j]]==true){cout<<"NO"<<endl;return;}//len=lenb-1;  此时b中的*要删除  l=0 //len=lenb  *  此时b中的*要替换  l=1; }is=is+l-1;}is++,ib++;}//  cout<<is<<" "<<ib<<endl;//    if(ib<lenb||is<len)
//  {
//      cout<<"NO"<<endl;
//      return;
//  }cout<<"YES"<<endl;}int main()
{cin>>a>>b;lenb=b.size();for(int i=0;i<a.size();i++){st[a[i]]=true;//记录好的字符}for(int i=0;i<lenb;i++){if(b[i]=='*') idx=1;//有没有*}cin>>n;while(n--){solve();}return 0;
}​​

END


Petya and Exam(字符串模拟)相关推荐

  1. CF5A Chat Server's Outgoing Traffic(字符串模拟,find函数的应用)难度⭐

    题意翻译 Polycarp正在开发一个名为"Polychat"的新项目.按照IT的现代倾向,他决定,这个项目也应该包含聊天.为了实现这一目标,Polycarp在笔记本电脑前花费了几 ...

  2. 剑指offer:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。

    汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S="abc ...

  3. 【Luogu1580】yyy loves Easter_Egg I(纯字符串模拟)

    problem 保持队形(我们认为只要这一句内含有且恰好含有一次@,@的人和上一句话一样就算为队形) 若艾特的人与第一个人不同,就算队形被打破,油炸失败.若这个人在队形被打破之前出来吱声了,或者就是他 ...

  4. C. Petya and Exam

    C. Petya and Exam 题目链接 题目大意,考试t个小时,n个题,简单题要用a个小时,难题要花b个小时,每题1分,可随时交卷,但考试过程中会随着时间的延长,题目会变成必做题,如果交卷时必做 ...

  5. POJ 3095 Linear Pachinko 字符串模拟

    http://poj.org/problem?id=3095 简单字符串模拟 Linear Pachinko Time Limit:1000MSMemory Limit:65536K Descript ...

  6. Petya and Exam 模拟

    It's hard times now. Today Petya needs to score 100 points on Informatics exam. The tasks seem easy ...

  7. B. Petya and Exam

    题目链接 It's hard times now. Today Petya needs to score 100 points on Informatics exam. The tasks seem ...

  8. Petya and Exam

    Description It's hard times now. Today Petya needs to score 100 points on Informatics exam. The task ...

  9. 洛谷 - P1308 统计单词数(字符串+模拟)

    题目链接:点击查看 题目大意:给出一个字符串a和字符串b,现在问字符串b中有多少个单词与字符串a相等,并记录第一次出现的位置 题目分析:看似很简单的一个模拟题,其实包含了不少需要注意的地方: stri ...

最新文章

  1. 为啥程序员下班后只关显示器从不关电脑?看看各大网站的答案~
  2. linux rpm mysql 路径_linux基础-linux 下 安装 rpm 格式 的 mysql
  3. jqGrid文字根据表格大小自动换行
  4. hdu 2795(单点改动)
  5. 算法训练 最小乘积(基本型) (蓝桥杯水题)
  6. 跨平台开发框架到底哪家强?5款主流框架横向对比!
  7. SQL server常用查询
  8. Qt工作笔记-时QLabel具有点击事件(使用EventFilter)
  9. java程序设计自考_java程序设计自考试题
  10. 每天一个linux命令(55)--at命令
  11. vim替换字符(包括行首行尾添加字符串)
  12. 大数据面试官别再问闭包了
  13. 多linux服务器之间实现文件自动复制(脚本)
  14. PHP爬取网页内容并存放至项目文件中
  15. 请教如何注销从微信登陆的CSDN账户?
  16. 无法连接阿里云 Windows 实例远程桌面
  17. HTTP接口设计规范
  18. ios 微信内置浏览器 缓存清理
  19. NLP教程笔记:BERT 双向语言模型
  20. broker指定ip

热门文章

  1. 一次练手实战破解某字典–爆破篇
  2. C# 多线程详细讲解
  3. 猫眼爬虫top100(xpath,re)对评分进行数据可视化。
  4. 目前,实现机器人语音交互功能的主流技术有哪些?
  5. php如何获取视频封面,html5 上传视频后 如何取得视频当中的片段作为视频封面?...
  6. 数据结构与算法-克鲁斯卡尔算法(Kruskal) | 尚硅谷韩顺平
  7. 甲申日,订盟时—思杰马克丁与吉他左轮签约Guitar Pro合作代言
  8. html注释图案,jQuery图片点击弹出遮罩层标记注释特效
  9. 深度学习中常用的优化算法(SGD, Nesterov,Adagrad,RMSProp,Adam)总结
  10. 自学day1 | Simulink在控制系统与电路中的简单demo