P13549 热辣滚烫

· · 题解

插入长度为 w 的字符串 x,那么字符串就变成了 s_1,s_2\cdots s_l,x_1,x_2\cdots x_w,s_r,s_r+1\cdots s_n, 不难看出,s 前后缀不变。

所以如果 s1,s2 的相同前后缀长度和大于 n 时,符合条件

#include <bits/stdc++.h>
using namespace std;
string s1,s2;
int T,n,m;
int main(){
    ios::sync_with_stdio(0); 
    cin.tie(0);
    cin>>T;
    while(T--){
        cin>>n>>m>>s1>>s2;//嗯……n,m忘用了 
        int ans1=0,ans2=0;
        for(int i=0;i<s1.size();i++){//相同前缀 
            if(s1[i]==s2[i])ans1++;
            else break;
        }
        for(int i=s1.size()-1,j=s2.size()-1;i>=0;i--,j--){//相同后缀 
            if(s1[i]==s2[j]) ans2++;
            else break;
        }
        if(ans1+ans2>=s1.size()){
            cout<<"Yes\n";
        }
        else cout<<"No\n";
    }
    return 0;
}