8.11 2575 给出字符串

  • 题目
  • 题解
  • 代码

题目

给出一个由小写字母组成的字符串。你的任务是找出其最长的出现至少两次的子串的长度。这些重复出现的子串可以重叠(参见样例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.

你可能感兴趣的:(字符串,模拟)