FZU 2122 又见LKity(KMP+返回所有匹配位置)
基础kmp应用,找到所有匹配位置即可
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<iostream>
using namespace std;
char t[],f[],aim[];
int mark[],next[];
bool myequal(char a,char b)
{
if(a >= 'A' && a <= 'Z')
a = a-'A'+'a';
if(b >= 'A' && b<= 'Z')
b = b-'A'+'a';
if(a == b)return true;
else return false;
}
void makenext(const char *p)
{
int q,k;
int m = strlen(p);
next[] = ;
for(q = ,k = ;q < m;q++)
{
while(k > && !myequal(p[q],p[k])) k = next[k-];
if(myequal(p[q],p[k])) k++;
next[q] = k;
}
}
void kmp(const char *t,const char *p)
{
int n,m,i,q;
n = strlen(t),m = strlen(p);
makenext(p);
for(i = ,q = ;i < n;i++)
{
while(q > && !myequal(p[q],t[i])) q = next[q-];
if(myequal(p[q],t[i])) q++;
if(q == m) mark[i-m+] = ;
}
}
int main()
{
while(gets(f))
{
gets(aim);
gets(t);
memset(mark,,sizeof(mark));
memset(next,,sizeof(next));
kmp(t,f);
int lent = strlen(t),lenjump = strlen(f);
for(int i = ;i < lent;i++)
{
if(mark[i])
{
cout<<aim;
i += lenjump-;
}
else cout<<t[i];
}
cout<<endl;
}
return ;
}
FZU 2122 又见LKity(KMP+返回所有匹配位置)的更多相关文章
- FZU 2122 ——又见LKity——————【KMP字符串匹配】
Problem 2122 又见LKity Accept: 413 Submit: 1425Time Limit: 1000 mSec Memory Limit : 32768 KB Pr ...
- FZU 2122——又见LKity——————【字符串匹配、暴力】
Problem 2122 又见LKity Accept: 407 Submit: 1413Time Limit: 1000 mSec Memory Limit : 32768 KB Pr ...
- FZU 2122 又见LKity【字符串/正难则反/KMP/把一个字符串中某个部分替换为另一个部分】
嗨!大家好,在TempleRun中大家都认识我了吧.我是又笨又穷的猫猫LKity.很高兴这次又与各位FZU的ACMer见面了.最近见到FZU的各位ACMer都在刻苦地集训,整天在日光浴中闲得发慌的我压 ...
- FZU 2122 又见LKity
直接模拟或者KMP #include <iostream> #include <string.h> #include <stdio.h> #include < ...
- hust训练赛20160330--B - 又见LKity
Problem 2122 又见LKity Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description 嗨!大家好,在Templ ...
- KMP算法,匹配字符串模板(返回下标)
//KMP算法,匹配字符串模板 void getNext(int[] next, String t) { int n = next.length; for (int i = 1, j = 0; i & ...
- hihocoder 1015 KMP(找多个位置的 【*模板】)
#1015 : KMP算法 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在 ...
- KMP算法——字符匹配
暴力匹配: 假设现在我们面临这样一个问题:有一个文本串S,和一个模式串P,现在要查找P在S中的位置,怎么查找呢? 如果用暴力匹配的思路,并假设现在文本串S匹配到 i 位置,模式串P匹配到 j 位置, ...
- 整数数组的定义,然后输入一个整数X,假定X不在这个数组,返回小于X位置的最大数目i而超过X位置的最小数目j
//整数数组的定义,然后输入一个整数x,假定X不在这个数组,返回小于X位置的最大数目i而超过X位置的最小数目j: //如果X在该阵列,返回位置的阵列中的数. 资源: #include<iostr ...
随机推荐
- 一个Cmake的例子
命令查询列表:http://www.cmake.org/cmake/help/v3.2/manual/cmake-commands.7.html # # Official dependency num ...
- Git的Bug分支----临时保存现场git stash
软件开发中,bug就像家常便饭一样,有了bug就需要修复,在Git中,由于分支是如此的强大,所以每个bug通过一个新的分支来修复,在修复后,合并分支,然后将临时分支删除. 当你接到一个修复代号为119 ...
- ECOS-认证地址
ECOS系统授权认证,需要和Shopex认证中心互联.当服务器DNS无效时.需要绑定host强行解析服务器强行解析以下vim /etc/hosts 122.144.135.142 service.sh ...
- ios 中NSArray
// #import <Foundation/Foundation.h> #import "Animal.h" int main(int argc, const cha ...
- 全选js实现
前端全选框 <input type='checkbox' name='allSelect' onclick='sel(this)'></input> //有i个选择框 < ...
- PHP的抽象类、接口类的区别和选择【转载】
本文转自:http://blog.csdn.net/fanteathy/article/details/7309966 区别: 1.对接口的使用是通过关键字implements.对抽象类的使用是通过关 ...
- linq中first() firstordefault() last() lastOrDefault() single() singleOrDeafult
一.firstordefault() 和 first() class Program { static void Main(string[] args) { List<Emp> list ...
- grub修复
sudo mount /dev/sda1 /boot/efi sudo modprobe efivarfs sudo grub-install /dev/sda sudo update-grub su ...
- ORA-12170: TNS:Connect timeout occurred
VM 作为ORACLE 服务器,客户端登陆提示超时,本地连接使用网络连接正常. D:>sqlplus system/oracle123@//192.168.63.121:15021/pdb01 ...
- hdu 5532
input 1<=T<=2000 2<=n<=10e5 a1 a2 ... an 1<=ai<=10e5 最多二十个n>1000 output 能否从数组中移 ...