单词替换 KMP 简单应用
来源:互联网 发布:当代大学生创业数据 编辑:程序博客网 时间:2024/06/06 01:35
【题意】
给出一个仅包含小写字母的字符串s,和单词A,B。把s中所有的出现过的A替换为B。
【解题思路】简单KMP算法的应用,每一个匹配的地方注意输出替换后的字符串就可以了。
【补充】
【AC代码】Sample Input
3aaaabaaaaabababaabacdSample Output
bbbbacdba
#include <stdio.h>#include <string.h>#include <iostream>using namespace std;const int maxn=500010;char s[maxn],t[maxn],b[maxn];int nxt[maxn];void kmp_pre(){ memset(nxt,0,sizeof(nxt)); int j=0,m=strlen(t+1); for(int i=2; i<=m; i++){ while(j>0&&t[j+1]!=t[i]) j=nxt[j]; if(t[j+1]==t[i]) j++; nxt[i]=j; }}void kmp(){ int j=0,n=strlen(s+1),m=strlen(t+1); int last=1; for(int i=1; i<=n; i++){ while(j>0&&t[j+1]!=s[i]) j=nxt[j]; if(t[j+1]==s[i]) j++; if(j==m){// printf("match success!\n"); j=0; for(int k=last; k<=i-m; k++) printf("%c",s[k]); printf("%s",b+1); last=i+1; } } for(int i=last; i<=n; i++)printf("%c",s[i]);}int main(){ int T; scanf("%d",&T); while(T--){ scanf("%s",s+1); scanf("%s",t+1); scanf("%s",b+1); kmp_pre(); kmp(); printf("\n"); } return 0;}
0 0
- 单词替换 KMP 简单应用
- CQU 单词替换(KMP)
- SCU 4495 单词替换 KMP
- KMP算法以及简单应用(查找单词)
- [SCU 4495] 单词替换 (KMP)
- SDUTOJ KMP简单应用 【KMP】
- KMP简单应用
- SDUT KMP简单应用
- kmp简单应用
- KMP简单应用
- KMP简单应用
- KMP简单应用
- KMP简单应用
- KMP简单应用
- KMP简单应用
- KMP简单应用
- KMP简单应用
- KMP简单应用
- 编码芯片EV1527射频学习
- Java枚举类型你真的知道么?
- 常见中文字体英文名称以及windows默认字体列表
- Remove Linked List Elements
- 盛大游戏是如何做到远程服务器的自动管理的?
- 单词替换 KMP 简单应用
- #!/usr/bin/Python 的意义
- 基于arm的C++反汇编 数组和指针的寻址
- python多线程编程之thread模块
- Node.Js上传图片
- 面试题25
- Hive的基本操作
- Zend Studio使用教程之在Mac OS X上进行安装
- C# 日期时间处理函数