求字符串ptr的前缀与str的后缀的最大相同子串,若不存在,输出0。

样例输入

mike
aniomkiava
dvakiadasds
fdsgh

样例输出

m 1
kia 3
0

分析:

先求字符串ptr的next数组,然后使用KMP算法求ptr的前缀与str后缀的最大相同子串

#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=1e5+10;
void cal_next(char* str,int* next,int len)
{next[0]=next[1]=0;for(int i=1;i<len;++i){int j=next[i];while(j&&str[i]!=str[j])j=next[j];next[i+1]=(str[j]==str[i])?j+1:0;}
}
int kmp(char *str,int slen,char *ptr,int plen)
{//int *next=new int[plen];int next[maxn];cal_next(ptr,next,plen);
/*for(int i=0;i<plen;i++)printf("%d ",next[i]);printf("\n");
*/int j=0;for(int i=0;i<slen;i++){while(j&&ptr[j]!=str[i])j=next[j];if(ptr[j]==str[i])++j;}//printf("j:%d\n",j);return j;
}
char str[maxn],ptr[maxn],ans[maxn];int main()
{while(scanf("%s%s",ptr,str)!=EOF){int plen=strlen(ptr),slen=strlen(str);int len=kmp(str,slen,ptr,plen);//printf("len:%d\n",len);if(len==0)  printf("0\n");else{memset(ans,0,sizeof(ans));memcpy(ans,ptr,len*sizeof (char));printf("%s %d\n",ans,len);}}return 0;
}

求一个字符串的前缀与另一个字符串的后缀的最大相同子串相关推荐

  1. c语言里字符串和字符串字面量,string literals(字符串字面量)

    构造一个指定字符数组类型的未命名对象,用于需要在源代码中嵌入字符串时使用. 句法 " s-char-sequence "(1)u8 " s-char-sequence & ...

  2. LeetCode4_编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ““。(解决方案:横向扫描、 纵向扫描 、分治 二分查找 、秀儿操作之排序比较头尾)

    题目 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow&q ...

  3. Java黑皮书课后题第5章:*5.51(最长的共同前缀)编写一个程序,提示用户输入两个字符串,显示两个字符串最长的共同前缀

    5.51(最长的共同前缀)编写一个程序,提示用户输入两个字符串,显示两个字符串最长的共同前缀 题目 题目概述 运行示例 破题 代码 题目 题目概述 5.51(最长的共同前缀)编写一个程序,提示用户输入 ...

  4. 20190501-编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串...

    题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow ...

  5. 有关完全二叉树求节点数和前缀树求字符串是否重复的两道算法题

    1.给定一棵完全二叉树的头节点head,求其中的节点个数 递归的方法,时间复杂度为O((logN)²) 首先递归出头节点的左子树的最大深度H,之后再递归头节点的右子树的深度是否等于H,若相等则表示,头 ...

  6. Swift3.0语言教程获得一个公共的前缀

    Swift3.0语言教程获得一个公共的前缀 Swift3.0语言教程获得一个公共的前缀,当在一个程序中有多个字符串时,我们需要判断是否有两个字符串有公共的前缀时,是很困难的.在NSString中的co ...

  7. 一个文件,内含一千万行字符串,每个字符串在1K以内,要求找出所有相反的串对

    一个文件,内含一千万行字符串,每个字符串在1K以内,要求找出所有相反的串对,如abc和cba. 当时怎么想的忘记了,现在重新思考一下,文件的大小上限是10G,不可能在内存操作了.考虑设计一种hash使 ...

  8. Java黑皮书课后题第6章:6.37(格式化整数)编写一个测试程序,提示用户输入一个数字以及宽度,显示通过调用format方法返回的字符串

    6.37(格式化整数)编写一个测试程序,提示用户输入一个数字以及宽度,显示通过调用format方法返回的字符串 题目 题目描述 破题 代码 运行示例 题目 题目描述 6.37(格式化整数) 使用下面的 ...

  9. 如何检查字符串“ StartsWith”是否为另一个字符串?

    如何在JavaScript中编写等效于C#的String.StartsWith ? var haystack = 'hello world'; var needle = 'he';haystack.s ...

最新文章

  1. asp.net ajax 弹不出alert对话框的解决办法
  2. Linux卸载搜狐,双系统删除教程详解:Windows(linux)双系统,教你如何删除其中一个!...
  3. 密码学AES算法_S盒_C值搜索
  4. 【java】动态绑定机制
  5. JAVA异步爬虫_Java 爬虫遇上数据异步加载,试试这两种办法!
  6. EFCore.Sharding(EFCore开源分表框架)
  7. 数据结构之线性表:单链表
  8. 您第一次上网的速度是多少?
  9. 使用git-bash向码云提交项目
  10. Error:Trailing spaces not allowed no-trailing-spaces
  11. 如何直观理解拉格朗日乘子法与KKT条件
  12. iOS开发之国际化(二)
  13. jquery可拖拽式内容模块gridder
  14. 基于STM32的微信视频电话机,让家里的老人也能轻松使用微信视频电话
  15. uniapp 使用本地数据库
  16. 数据结构:zyf树/毒瘤树
  17. STM32移植U8g2图形库——玩转OLED显示
  18. paparazzi 使用3DR数传模块
  19. Neo4j导入本地CSV文件三元组关系生成图谱
  20. 广州的11个辖区_对不起,你真的不了解广州11个区!

热门文章

  1. 访问Mysql数据库,连接字符串配置
  2. Omi框架学习之旅 - 插件机制之omi-finger 及原理说明
  3. javascript对于DOM加强
  4. SVN合并(merge)的使用
  5. matlab参考答案2011至诚,职高数学试卷答卷答案详解
  6. python连接oracle进行监控_使用Python脚本zabbix自定义key监控oracle连接状态
  7. 关于六年级定格动画计算机教案,定格动画教案
  8. flink 6-检查点和水位线
  9. python库和模块的区别_在函数中导入python库与全局导入之间有何区别?
  10. anaconda 历史版本_【windows】下Anaconda详细安装过程