#模拟#B 字串修改
题目
有两个字符串\(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 字串修改的更多相关文章
- 【字符串】BZOJ上面几个AC自动机求最为字串出现次数的题目
(一下只供自己复习用,目的是对比这几个题,所以写得不详细.需要细节的可以参考其他博主) [BZOJ3172:单词] 题目: 某人读论文,一篇论文是由许多(N)单词组成.但他发现一个单词会在论文中出现很 ...
- [FAQ]String(字串相連)與StringBuilder的差別、原理與優缺點?
原文位於 http://www.dotblogs.com.tw/mis2000lab/archive/2013/09/09/msdn_string_stringbuilder.aspx [FAQ]St ...
- .net core 1.1.0 MVC 控制器接收Json字串 (JObject对象) (二)
.net core 1.1.0 MVC 控制器接收Json字串 (JObject对象) (二) .net core 1.1.0 MVC 控制器接收Json字串 (JObject对象) (一) 上一篇主 ...
- Inno Setup:获取isl中的多国语言字串
原文 http://zwkufo.blog.163.com/blog/static/25882512010101041626803/?suggestedreading&wumii 用InnoS ...
- NOIP 2002 提高组 字串变换
题目描述 已知有两个字串 A, B 及一组字串变换的规则(至多6个规则): A1 -> B1 A2 -> B2 规则的含义为:在 A$中的子串 A1 可以变换为 B1.A2 可以变换为 B ...
- Day07 - Ruby比一比:Symbol符号与String字串
前情提要: 第六天我们透过Ruby代码练习public,protected和privatemethod时,发现冒号在前面的参数,:mydraft,:myspace,这些就是符号Symbol.在今天,我 ...
- [BZOJ3230] 相似字串 后缀数组+RMQ
3230: 相似子串 Time Limit: 20 Sec Memory Limit: 128 MB Description Input 输入第1行,包含3个整数N,Q.Q代表询问组数.第2行是字符 ...
- [洛谷P1032] 字串变换
洛谷题目链接:字串变换 题目描述 已知有两个字串 A, B 及一组字串变换的规则(至多6个规则): A1 -> B1 A2 -> B2 规则的含义为:在 A$中的子串 A1 可以变换为 B ...
- 【NOIP2015】 Day2 T2 字串 (多维动归)
2018-09-12 原题传送门(洛谷)https://www.luogu.org/problemnew/show/P2679 模拟考试的时候完全没有想到 正确的DP方程呢 本来写了一个大致是对的转移 ...
- 洛谷 P1032 字串变换 (BFS)
题目传送门 我即使是死了,钉在棺材里了,也要在墓里,用这腐朽的声带喊出 STL大法好 这题最麻烦的其实是处理字符串,真正的搜索部分我个人认为也就只有橙题或黄题的难度.而处理字符串,正如前面所说,STL ...
随机推荐
- 项目实战:Qt+OpenCV图像处理与识别算法平台
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- Spring Cloud Zuul 获取当前请求的路由信息和路由后端的服务节点信息
基本思路 参考spring-cloud-zuul-ratelimit开源项目,在过滤器中根据当前的请求路径,判断当前的路由信息,当取得路由信息后,可以对服务的调用次数做统计等操作. 具体实现 创建一个 ...
- 【App Service】遇见本地访问Azure App Service应用慢或者是调用第三方接口慢的调试小工具
问题描述 当应用部署到微软云 Azure后,如果遇见本地访问Azure App Service应用慢或者是调用第三方接口慢的时候,有什么好的调试方法呢? 来判断具体时那一段请求耗时呢? 问题解答 当然 ...
- 【Azure App Service】当App Service中使用系统标识无法获取Access Token时
问题描述 App Serive上的应用配置了系统标识(System Identity),通过系统标识获取到访问Key Vault资源的Access Token.但这次确遇见了无法获取到正常的Acces ...
- 【Azure APIM】APIM Self-Hosted网关中,添加网关日志以记录请求头信息(Request Header / Response Header)
问题描述 在APIM Gateway 日志中, 对于发送到APIM Host的请求,只记录了一些常规的URL, Status, Time, IP等信息.关于请求Header, Body中的信息,因为隐 ...
- 【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
问题描述 在App Service Linux环境中,如部署Tomcat 应用后,如果访问的页面找不到,应用会返回一个由Azure生成的404页面,那么是否可以修改它呢? PS: 如果是App Ser ...
- 【Azure 云服务】云服务(经典) 迁移至云服务(外延支持) 的相关疑问
问题描述 根据微软官方文档说明,云服务(经典)已弃用.所以关于它有以下的一些疑问: 一:迁移时候的停机时间问题? 二:云服务(经典) 与 云服务(外延支持) 的区别是什么? 三:注意事项有那些呢?如 ...
- Java-- Arrays操纵数组的工具类
1 //操作数组的工具类 java.util.Arrays :操作数组的工具类 里面定义了很多操作数组的方法 2 public static void main(String[] args) 3 { ...
- Nacos服务跨分组调用
一. 问题背景 nacos有两种服务隔离的机制,一个是空间namespace,一般我们用namespace区分环境,另外一个是分组group,nacos的默认调用机制是同namespace下的同gro ...
- ble的notification和indication的区别和联系
Ble服务端传输消息有两个常用手段,notification和indication.那么这两者之间有什么区别呢? Notification 不需要应答,所以服务端发送的消息,它自己并不知道消息是否发送 ...