专栏文章
题解:P13549 热辣滚烫
P13549题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minq66ai
- 此快照首次捕获于
- 2025/12/02 06:32 3 个月前
- 此快照最后确认于
- 2025/12/02 06:32 3 个月前
题意
给出两个字符串 、,问能否在 中间插入任意字符串,得到 。
思路
插入的位置把 分成了前后两个部分,很明显,这两个部分分别是 的前缀和后缀。
所以题目可以转化成:求 和 的公共前后缀是否覆盖了整个 。
分别从前往后和从后往前遍历两个字符串,计算出公共前缀的长度和公共后缀的长度,如果两个长度相加大于等于 的长度,就说明公共前后缀覆盖了整个 ,输出
Yes,否则输出 No。代码
CPP#include<bits/stdc++.h>
using namespace std;
int f(){
int n,m;
cin>>n>>m;
string a,b;
cin>>a>>b;
int sum1,sum2=0;
for(sum1=0;sum1<n;sum1++){
if(a[sum1]!=b[sum1]){
break;
}
}
for(int a1=n-1,a2=m-1;a1>=0&&a2>=0;a1--,a2--){
if(a[a1]==b[a2]){
sum2++;
}
else{
break;
}
}
if(sum1+sum2>=n){
cout<<"Yes\n";
}
else{
cout<<"No\n";
}
return 0;
}
int main(){
int T;
cin>>T;
while(T--){
f();
}
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...