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 ...
随机推荐
- python实现邮件发送
实例补充: #**************************利用STMP自动发送邮件******************************import smtplibsmtp = smtp ...
- VBS调用系统API
如Beep的API声明为 Public Declare Function Beep Lib “kernel32″ Alias “Beep” (ByVal dwFreq As Long, ByVal d ...
- @Value 注解获取properties值
转自:使用Spring 3的@value简化配置文件的读取 Spring 3支持@value注解的方式获取properties文件中的配置值,大简化了读取配置文件的代码. 1.在application ...
- python datetime时间差
import datetime import time d1 = datetime.datetime(2005, 2, 16) d2 = datetime.datetime(2004, 12, 31) ...
- A框架第一步,传递不同参数.主程序执行对应方法
访问: www.test.com/admin 1============后台目录:admin (确保单一入口) --有入口文件index.php <?phprequire '../A/a.php ...
- 一个forward_list C++primer
#include<iostream> #include<forward_list> using namespace std; int main() { forward_list ...
- PHP上传文件详解
1.上传文件使用的提交方式和请求Content-type POST提交方式,原始的form表单提交请加上enctype="multipart/form-data" 2.MAX_FI ...
- android-support-v7-appcompat
只要把values-v14下的styles.xml修改 用在4.0以上的设备 <!-- Base application theme for API 14+. This theme comple ...
- Echarts自适应浏览器大小
var myChart = echarts.init(document.getElementById('sitesChar')); var option = { title : { text: 'No ...
- LightOJ 1336 Sigma Function 算数基本定理
题目大意:f(n)为n的因子和,给出 n 求 1~n 中f(n)为偶数的个数. 题目思路:算数基本定理: n=p1^e1*p2^e1 …… pn^en (p为素数): f(n)=(1+p1+p1^2+ ...