回 帖 发 新 帖 刷新版面

主题:找公串(答对30分)

求N个字符串(N<20,串长<255)中最长的公共子串.如果最长的公共子串不止一个,只输出最先找到的那一个.

回复列表 (共3个回复)

沙发

这个有点难度,嘿嘿.
定义字符串数组来想想先.

板凳

n=20
dim s$(n)

for i=1 to n
    read s$(i)
    if len(s$(i))<len(s$(0)) or s$(0)="" then s$(0)=s$(i)
next

data ".,.,.,.,."....

L=len(s$(0))
for i=L to 1 step -1
    for j=1 to (L-i+1)
        if k>n then exit for
        s1$=mid$(s$(0),j,i)
        for k=1 to n
            if instr(s$(k),s1$)=0 then exit for
next k,j,i
if k>n then print s1$;

好了,终于完成了,
但至于怎样优化速度嘛,暂时还想不到好的办法。

3 楼

input n
L=LEN(N)
FOR I=1 TO N PRINT "NO.";I;
INPUT A$(I)
NEXT
L=LEN(A$(1))
FOR J=L TO 1 STEP -1 
FOR I=1 TO L+1-J
SUB$=MID$(A$(1),I,J)
F=-1
FOR K=2 TO N
 IF INSTR(A$(K),SUB$)=0 THEN F=0:EXIT FOR
NEXT K
IF F=-1 THEN PRINT SUB$:END
NEXT I
NEXT J
IF F=0 THEN PRINT "MOT FIND"
END 
附:请将最短字符串第一个输入,否则出错正常

我来回复

您尚未登录,请登录后再回复。点此登录或注册