Censoring

Censoring

https://ac.nowcoder.com/acm/problem/24010

分析

有一道加强版的题解 这里 。那道题要求有多个模板串。而这道题只有一个,那么我们可以通过 来解决。考虑用栈储存路径,遇到完美匹配就返回 步。时间复杂度为

代码

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
char ch[N],S[N],ans[N];
int top = 0,nxt[N],f[N];
int main() {
    scanf("%s%s",ch + 1,S + 1);
    int n = strlen(S + 1);
    for(int i = 2,j = 0;i <= n;i++) {
        while(S[i] != S[j + 1] && j) j = nxt[j];
        if(S[i] == S[j + 1]) j++;
        nxt[i] = j;
    }
    int m = strlen(ch + 1);
    for(int i = 1,j = 0;i <= m;i++) {
        while(ch[i] != S[j + 1] && j) j = nxt[j];
        if(ch[i] == S[j + 1]) j++;
        ans[++top] = ch[i];
        f[top] = j;
        if(j == n) {top -= n;j = f[top];} 
    }
    for(int i = 1;i <= top;i++) printf("%c",ans[i]);
    printf("\n");
    return 0;
}
全部评论

相关推荐

smile丶snow:感觉可以加一些ai相关的内容吧。现在面试很少能逃掉这些问题。羡慕里面感觉缺少一个项目背景。比如第二个项目后台管理系统…你为什么要做这个后台管理系统呢?是为了解决什么问题。比如你管理一个商品列表的增加减少。需要一个背景吧。哦或者说你第一个电子书那个是c端的,你肯定需要一个管理系统吧,那就是第二个后台管理系统,但这两个难道不应该是一个项目吗?可以稍微包装一下,最起码让人看着不是玩具项目。个人观点。
点赞 评论 收藏
分享
评论
5
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务