8.11 2575 给出字符串

来源:互联网 发布:金十数据. 编辑:程序博客网 时间:2024/06/02 00:38

  • 题目
  • 题解
  • 代码

题目

给出一个由小写字母组成的字符串。你的任务是找出其最长的出现至少两次的子串的长度。这些重复出现的子串可以重叠(参见样例2)。
数据保证该字符串非空,由小写字母组成,且其长度不超过100。

【输入样例2】 【输出样例2】
ababa 3

题解

n2n3

代码

n2,KMP

var  s:string;  i,j,k,ans:longint;begin  readln(s);  ans:=0;  for i:=1 to length(s) do    for j:=ans+1 to length(s)-i+1 do      if (pos(copy(s,i,j),s)<>0)and(pos(copy(s,i,j),s)<>i) then        ans:=j;  writeln(ans);end.

西n3

var  s:string;  i,j,k,n,ans,max:longint;begin  assign(input,'ygas.in');  assign(output,'ygas.out');  reset(input);rewrite(output);  readln(s);  n:=length(s);  for i:=1 to n do    for j:=1 to n-i+1 do      for k:=i+1 to n-j+1 do        if (copy(s,i,j)=copy(s,k,j))and(j>ans) then ans:=j;  writeln(ans);  close(input);close(output);end.
原创粉丝点击