您能帮我在Scilab中构建一种算法,该算法搜索n-元素的零一序列中最长的回文。应为输出指定回文的长度和在开始搜索序列的字符串中的位置。
例如:对于111010101100,最长回文为110101011。回文的长度为9,并且在序列中字符串的位置为2。
这是上面注释中提出的算法的可能实现:
x = "10100111000";
n = length(x);
lgmax = 0;
pos = 0;
for i = 2:n-1
// k=0: odd sequence, k=1: even sequence
for k = 0:1
j=1;
while j <= min(i-1+k,n-i) && part(x,i+j) == part(x,i-j+k)
j = j+1;
end
if 2*j-1-k > lgmax
lgmax = 2*j-1-k;
pos = i-j+1+k;
end
end
end
disp(part(x,pos:pos+lgmax-1))