fuz--2128(最长子串)
Accept: 130 Submit: 516
Time Limit: 3000 mSec Memory Limit : 65536 KB
Problem Description
Input
输入包含多组数据。第一行为字符串s,字符串s的长度1到10^6次方,第二行是字符串s不能包含的子串个数n,n<=1000。接下来n行字符串,长度不大于100。
字符串由小写的英文字符组成。
Output
Sample Input
Sample Output
思想:算出每一个字符串在字符串s中出现的位置,即记录出现的起点位置和终点位置。并用一个结构体数组存储下来,然后按终点位置进行排序,字符串s的终点看做是一个为0 的串,即mark[].s=mark[].e=l;最后从左到右,每后一个终点减去前一个起点再减一,记录长度,重复上述操作,取最大的长度,则为题目所求的最大子串长度。
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define M 0x3f3f3f3f
using namespace std;
char a[1000010];
struct stu
{ int s;
int e;
}mark[1000010];
char b[110];
int per[110];
int k;
int cmp(stu a,stu b)
{
if(a.e==b.e)return a.s<b.s;
else return a.e<b.e;
}
void get_m()
{
int i=0;
int j=0;
int l1,l2;
l1=strlen(a);
l2=strlen(b);
while(i<l1)
{
if(j==-1||a[i]==b[j])
{
i++;j++;
if(j==l2)
{
mark[k].e=i-1;
mark[k].s=i-l2;
k++;
}
}
else j=per[j];
}
}
void kmp()
{
int i=0;
int j=-1;
int l=strlen(b);
per[i]=j;
while(i<l)
{
if(j==-1||b[i]==b[j])
{
i++;
j++;
per[i]=j;
}
else j=per[j];
}
}
int main()
{
int n;
while(scanf("%s",a)!=EOF)
{
int l1=strlen(a);
scanf("%d",&n);
k=0;
for(int i=0;i<n;i++)
{
scanf("%s",b);
kmp();
get_m();
}
sort(mark,mark+k,cmp);
int len=0;
int l=0;
mark[k].e=mark[k].s=l1;
for(int i=0;i<=k;i++)
{
if(mark[i].e-l>len)len=mark[i].e-l;
l=mark[i].s+1;
}
printf("%d\n",len);
}
return 0;
}
fuz--2128(最长子串)相关推荐
- Problem 2128 最长子串(kmp+strstr好题经典)
Problem 2128 最长子串 Accept: 134 Submit: 523 Time Limit: 3000 mSec Memory Limit : 65536 KB Prob ...
- 最长子串(FZU2128)
最长子串 Time Limit:3000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Status ...
- 【leetcode】力扣刷题(3):无重复字符的最长子串(go语言)
一.问题描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 " ...
- leetcode--无重复字符的最长子串--python
文章目录 题目 题目详情 示例 解题代码 思路 代码 运行结果 最佳方案 题目 题目详情 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 输入: "abcabcbb& ...
- 刻意练习:LeetCode实战 -- Task16. 无重复字符的最长子串
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...
- 【每日一算法】无重复字符的最长子串
微信改版,加星标不迷路! 每日一算法 - 无重复字符的最长子串 思路答案 首先定义一个指针p指向该字符串的链头,然后通过p指针后的第i个字符是否和p指针后的第j个字符相同来取得最大长度.(也叫做完全遍 ...
- 汇编语言求无符号数组中出现的次数最多数_【今日最佳leecode通俗易懂】无重复字符的最长子串...
相信看了这个标题的同学,对这道题以已经非常不陌生了,就是leecode当中的第三题,之所以要单独的写一写主要对我来说,里面涉及到有一个滑动窗口, 散列表, 字符编码等知识点比较重要,也有几个小技巧,这 ...
- 大二菜鸟———无重复字符的最长子串
这是一枚大二菜鸟的成长反思博客 终于忍不住,在这六月将之的一天开始写起了博客.数据结构计算机算法杂七杂八学了一堆但是都只是浅尝,觉得还是要写博客反刍学习到的知识. 感谢大佬 @Java3y 的 ...
- 无重复最长子串python_leetCode 无重复字符的最长子串 python(Longest Substring Without Repeating Characters) python...
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. Default 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 &quo ...
- 算法---------至少有K个重复字符的最长子串(Java版本)
题目 找到给定字符串(由小写字符组成)中的最长子串 T , 要求 T 中的每一字符出现次数都不少于 k .输出 T 的长度.示例 1:输入: s = "aaabb", k = 3输 ...
最新文章
- 会说话的狗狗本电脑版_会说话的电脑有点酷!惠普星14帮你解锁“偷懒”新姿势_惠普 星 14 2020(i5 1135G7/16GB/512GB/MX450)_笔记本新闻...
- RHEL5+ImageMagick-6.4.0-0+jmagick-6.4.0+resin 解决方案
- MVC用非Entity Framework将数据显示于视图(二)
- Markdown语法记录
- 【Paper】2014_多智能体系统一致性问题研究_唐骥宇
- WebStorm 和 VsCode 的结合体来了!
- form提交php怎么接收不到,php form表单post提交获取不到数据,而使用get提交能获取到数据 的解决办法...
- 多线程lambda数据捕获
- 从数据表中取出第n条到第m条的记录的方法
- 个人知识管理系统Version1.0开发记录(07)
- SAP Brazil J1BTAX 为税收例外创建税收组(翻译)
- 第六届中国电子信息博览会今日正式开幕,智享新时代!
- 【历史上的今天】11 月 14 日:微软发布 PowerShell;彼得·诺顿出生;Firefox 更换内核
- java sql 搜索拼音
- vtd和vt的区别_英语中v,vi,vt有什么区别
- 物美集团携手SAP ERP项目成功上线(转)
- 关于电容、电阻并联接地
- 家庭宽带真的还有意义么?
- 深度学习在人脸识别中的应用 ——优图祖母模型的“进化”
- 500 字写一篇程序员的个人发展计划