题目

有两个字符串\(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. JSON排除指定字段的4种方法

    转自:https://blog.csdn.net/Sn_Keys/article/details/122443407

  2. golang泛型简介

    linux下go版本安装(1.18.1版本) >>> wget https://go.dev/dl/go1.18.1.linux-amd64.tar.gz >>> ...

  3. sort.interface接口

    一个内置的排序算法需要知道三个东西:序列的长度,表示两个元素比较的结果,一种交换两个元素的方式:这就是sort.Interface的三个方法: package sort type Interface ...

  4. 【LeetCode剑指offer#06】实现pow函数、计算x的平方根

    实现pow函数 实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn ). 示例 1: 输入:x = 2.00000, n = 10 输出:1024.00000 示例 2: 输入:x ...

  5. 【Azure Function】修改Function执行的Timeout时间

    问题描述 Azure Function默认的Timeout时间是否可以调整呢? 问题解答 可以的,根据创建Function的时候选择的定价层不同,Function 默认的Timeout时间也不同. 消 ...

  6. protocol buffer 知识整理(备份)

     定义消息:  最简单的例子:    1 // 下面是a.proto文件的内容 2 syntax = "proto3"; //必须指明proto3,否则会被认为是proto2 3 ...

  7. 使用 Java 在Excel中创建下拉列表

    下拉列表(下拉框)可以确保用户仅从预先给定的选项中进行选择,这样不仅能减少数据输入错误,还能节省时间提高效率.在MS Excel中,我们可以通过 "数据验证" 提供的选项来创建下拉 ...

  8. 单词本z custom cu = com 一起 都, st=suet 自己, om 尾缀, 都是自己身上的 = 习惯,习俗

    单词本z custom cu = com 一起 都, st=suet 自己, om 尾缀, 都是自己身上的 = 习惯,习俗 custom 来自拉丁语 consuetus cu = com st = s ...

  9. Pod的优先级(priorityClass)和抢占策略(preemptionPolicy)

    Pod优先级 Pod优先级是一个用于指示Pod相对重要程度的整数值.优先级高的Pod在调度时会优先被考虑,并且在资源不足时,优先级较低的Pod可能会被驱逐以释放资源给优先级较高的Pod.Pod优先级的 ...

  10. 三种方式使用纯 CSS 实现星级评分

    本文介绍三种使用纯 CSS 实现星级评分的方式.每种都值得细品一番~ 五角星取自 Element Plus 的 svg 资源 <svg xmlns="http://www.w3.org ...