给出字符串

Description

给出一个由小写字母组成的字符串。你的任务是找出其最长的出现至少两次的子串的长度。这些重复出现的子串可以重叠(参见样例2)。

Input

输入文件ygas.in第一行包含该字符串。数据保证该字符串非空,由小写字母组成,且其长度不超过100。

Output

输出文件ygas.out包含一个数代表至少出现两次的最长子串的长度。

Sample Input

【输入样例1】
abcd
【输入样例2】
ababa
【输入样例3】
zzz

Sample Output

【输出样例1】
0
【输出样例2】
3
【输出样例3】
3

分析
数据太水,直接暴力。

程序:

var
zfc,s:string;
max,n,tj,i,j,k:longint;

function check(x:longint):boolean;
var
i:longint;
begin
    for i:=1 to length(s) do
    if s[i]<>zfc[x+i-1] then exit(false);
    exit(true);
end;
begin
    assign(input,'ygas.in');
    reset(input);
    assign(output,'ygas.out');
    rewrite(output);
    read(zfc);max:=0;
    n:=length(zfc);
    for i:=1 to n-1 do
    begin
        for j:=1 to n do
        begin
            s:=copy(zfc,j,i);
            tj:=0;
            for k:=1 to n do
            begin
                if check(k)=true then inc(tj);
                if tj=2 then
                begin
                    if length(s)>max then max:=length(s);
                    break;
                end;
            end;
        end;
    end;
    write(max);
    close(input);
    close(output);
end.

posted @ 2017-08-11 16:54  银叶草  阅读(109)  评论(0编辑  收藏  举报
Live2D