Longest palindromic substrings: Difference between revisions

→‎faster: bugfix
(→‎faster: bugfix)
Line 385:
sequence res = {}
for i=1 to length(s) do
integer revfor j=0 to iff(i>1 and s[i-1]=s[i]?1:0), do
integer fwdrev = 0j,
while rev<i and i+fwd<=length(s) and s[i-rev]=s[i+ fwd] do= 0
while rev<i and i+fwd<=length(s) and s[i-rev]=s[i+fwd] 1do
fwd rev += 1
end while fwd += 1
string p = s[i-rev+1..i+fwd-1] end while
integer lp = length( string p) = s[i-rev+1..i+fwd-1]
if integer lp> =longest thenlength(p)
if lp>=longest then
longest =if lp>longest then
res longest = {p}lp
elsif not find(p,res) then -- (or just "else") res = {p}
reselsif =not appendfind(res,p,res) then -- (or just "else")
res = append(res,p)
end if
end if
end iffor
end for
return res -- (or "sort(res)" or "unique(res)", as needed)
end function
 
printf(1,"%s: %v\n",{s,longest_palindromes_raku(piStr)})</lang>
s = "abbbc"
printf(1,"%s: %v\n",{s,longest_palindromes_raku(s)})</lang>
{{out}}
(first line matches the above, the second was a initially a bug)
<pre>
3.141592653589793238...05600101655256375679 (10,002 digits): {"398989893","020141020"}
abbbc: {"bbb"}
</pre>
 
=={{header|Python}}==
7,803

edits