题目

有两个字符串\(s,t\),其中\(s\)只包含小写字母以及 *,\(t\)只包含小写字母。

你可以进行任意多次操作,每次选择\(s\)中的一个 *,将它修改为任意多个(可以是0个)它的前一个字符。

请求出是否能将\(s\)修改为\(t\)。(\(T\leq 100,len\leq 3*10^4\))


分析

考虑记录\(t\)中连续的字母以及长度,考虑用\(s\)匹配,

\(s\)也是可以用一段连续的字母或星号匹配,如果当前匹配的字母不同

或者是\(s\)中的字母个数超过\(t\)中的字母个数(不能删除)

又或者是不存在星号且两段长度不相同均为无解,均不满足以上条件才有解


代码

#include <cstdio>
#include <cstring>
#define rr register
using namespace std;
const int N = 30011;
char s1[N], s2[N];
int T, tot, len1, len2, J, A[N], B[N];
signed main() {
freopen("strinq.in", "r", stdin);
freopen("strinq.out", "w", stdout);
for (scanf("%d", &T); T; --T) {
scanf("%s%s", s1 + 1, s2 + 1), tot = 0, J = 1;
len1 = strlen(s1 + 1), len2 = strlen(s2 + 1);
for (rr int l = 1, r = 1; l <= len2; l = ++r) {
for (; s2[r + 1] == s2[l]; ++r)
;
A[++tot] = r - l + 1, B[tot] = s2[l];
}
for (rr int l = 1, r = 1; l <= len1; l = ++r)
if (s1[l] != '*') {
rr int t = 0;
for (; s1[r + 1] == s1[l] || s1[r + 1] == '*'; ++r)
;
for (rr int j = l; j <= r; ++j)
if (s1[j] != '*')
++t;
if (B[J] != s1[l] || A[J] < t)
break;
else if (t == r - l + 1 && A[J] > t)
break;
else
++J;
}
if (J <= tot)
printf("No\n");
else
printf("Yes\n");
}
return 0;
}

#模拟#B 字串修改的更多相关文章

  1. 【字符串】BZOJ上面几个AC自动机求最为字串出现次数的题目

    (一下只供自己复习用,目的是对比这几个题,所以写得不详细.需要细节的可以参考其他博主) [BZOJ3172:单词] 题目: 某人读论文,一篇论文是由许多(N)单词组成.但他发现一个单词会在论文中出现很 ...

  2. [FAQ]String(字串相連)與StringBuilder的差別、原理與優缺點?

    原文位於 http://www.dotblogs.com.tw/mis2000lab/archive/2013/09/09/msdn_string_stringbuilder.aspx [FAQ]St ...

  3. .net core 1.1.0 MVC 控制器接收Json字串 (JObject对象) (二)

    .net core 1.1.0 MVC 控制器接收Json字串 (JObject对象) (二) .net core 1.1.0 MVC 控制器接收Json字串 (JObject对象) (一) 上一篇主 ...

  4. Inno Setup:获取isl中的多国语言字串

    原文 http://zwkufo.blog.163.com/blog/static/25882512010101041626803/?suggestedreading&wumii 用InnoS ...

  5. NOIP 2002 提高组 字串变换

    题目描述 已知有两个字串 A, B 及一组字串变换的规则(至多6个规则): A1 -> B1 A2 -> B2 规则的含义为:在 A$中的子串 A1 可以变换为 B1.A2 可以变换为 B ...

  6. Day07 - Ruby比一比:Symbol符号与String字串

    前情提要: 第六天我们透过Ruby代码练习public,protected和privatemethod时,发现冒号在前面的参数,:mydraft,:myspace,这些就是符号Symbol.在今天,我 ...

  7. [BZOJ3230] 相似字串 后缀数组+RMQ

    3230: 相似子串 Time Limit: 20 Sec  Memory Limit: 128 MB Description Input 输入第1行,包含3个整数N,Q.Q代表询问组数.第2行是字符 ...

  8. [洛谷P1032] 字串变换

    洛谷题目链接:字串变换 题目描述 已知有两个字串 A, B 及一组字串变换的规则(至多6个规则): A1 -> B1 A2 -> B2 规则的含义为:在 A$中的子串 A1 可以变换为 B ...

  9. 【NOIP2015】 Day2 T2 字串 (多维动归)

    2018-09-12 原题传送门(洛谷)https://www.luogu.org/problemnew/show/P2679 模拟考试的时候完全没有想到 正确的DP方程呢 本来写了一个大致是对的转移 ...

  10. 洛谷 P1032 字串变换 (BFS)

    题目传送门 我即使是死了,钉在棺材里了,也要在墓里,用这腐朽的声带喊出 STL大法好 这题最麻烦的其实是处理字符串,真正的搜索部分我个人认为也就只有橙题或黄题的难度.而处理字符串,正如前面所说,STL ...

随机推荐

  1. AirtestProject浅尝辄止

    AirtestProject是什么 AirtestProject是由网易游戏推出的UI自动化测试解决方案,主要包含3部分内容: 1.Airtest框架:跨平台的,基于图像识别的UI自动化测试框架,支持 ...

  2. Postman文件数据导入导出

    https://zhuanlan.zhihu.com/p/535757471?utm_id=0

  3. git 多系统复用账号

    重装系统前请备份~/.ssh下的公钥私钥文件,重装系统后,请使用以下方法复用好之前的key 将备份好的key copy至~/.ssh下 将私钥id_rsa的文件属性改为600:sudo chmod 6 ...

  4. 【LeetCode剑指offer#04】包含min函数的栈、栈的压入、弹出序列(辅助栈的应用)

    包含min函数的栈 https://leetcode.cn/problems/bao-han-minhan-shu-de-zhan-lcof/ 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元 ...

  5. 【LeetCode栈与队列#02】有效括号

    有效括号 力扣题目链接(opens new window) 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右 ...

  6. 【Azure 事件中心】通过 az rest --method get 如何获得Event Hub Entity 级的统计指标

    问题描述 通过 az rest --method get  如何获得Event Hub Entity 级的统计指标? 问题解答 查阅文档  https://learn.microsoft.com/en ...

  7. 【应用服务 App Service】App Service For Linux 中如何挂载一个共享文件夹呢? Mount Azure Storage Account File Share

    问题描述 使用Linux作为服务器运行Web App时,如何将 Storage Account 作为本地共享装载到 App Service for  Linux / Container 中的应用呢? ...

  8. C++ //类模板成员函数类外实现

    1 #include <iostream> 2 #include <string> 3 #include<fstream> 4 using namespace st ...

  9. evalFn 字符串转执行函数 附带JSONParse函数

    const evalFn = (fn) => { var Fun = Function // 一个变量指向Function,防止前端编译工具报错 return new Fun('return ' ...

  10. mockjs 前端写完 给后台调 mock.js | 改到2.0版本

    需求:最近活太忙了,实在是联调没有时间了,无奈又拾起来mockjs 1 安装mockjs npm install mockjs // 这是个只在开发的时候用,打包后就没有了,业务更安全 npm ins ...