(以下代码可直接带入matlab运行,首先以.m文件保存第一段代码,然后在command window输入第二段代码即可)
function D=substringArray(A,B)
na=length(A);
nb=length(B);
C=zeros(nb,na);
for i=1:nb
C(i,1)=0;
end
for j=1:na
C(1,j)=0;
end
for i=2:nb
for j=2:na
if B(i-1)==A(j-1)
C(i,j)=C(i-1,j-1)+1;
else if C(i-1,j)>=C(i,j-1)
C(i,j)=C(i-1,j);
else
C(i,j)=C(i,j-1);
end
end
end
end
valmax=C(nb,na);
i=nb;
j=na;
D='';
while i>1 & j>1
if C(i,j)==C(i-1,j-1)+1 & A(j-1)==B(i-1)
D=strcat(B(i-1),D) ;
i=i-1;
j=j-1;
else if C(i,j)==C(i,j-1)
j=j-1;
else
i=i-1;
end
end
end