Longest palindromic substrings: Difference between revisions

→‎{{header|ALGOL 68}}: slight simplification
(Added Algol 68)
(→‎{{header|ALGOL 68}}: slight simplification)
Line 64:
# if there are multiple substrings with the longest length, the leftmost is returned #
PROC longest palindromic substring = ( STRING s )STRING:
IF INTLENGTH lens =< LENGTH s;2
len < 2
THEN s
ELSE
Line 76 ⟶ 75:
FI;
FOR i FROM lwb s + 1 TO upb s - 1 DO
INT p start := i;
INT p end := i + 1;
BOOLIF have palindromeIF s[ i - 1 ] := FALSE;s[ i + 1 ] THEN
IF s[ i - 1 ] =# s[odd length palindrome at i +- 1 ] THEN#
# odd length palindrome atp istart -:= 1 #;
p start := i - 1;TRUE
haveELIF palindromes[ i ] := TRUEs[ i + 1 ] THEN
ELIF s[ i ] = s[ i + 1# ]even length palindrome at i THEN#
# even length palindrome at i #TRUE
haveELSE palindrome := TRUEFALSE
FI;
IF have palindrome THEN
# have a palindrome at p start : p end #
# attempt to enlarge the range #
Line 94 ⟶ 93:
ELSE s[ p start - 1 ] = s[ p end + 1 ]
FI
DO # can extend he palindrome #
# can extend he palindrome #
p start -:= 1;
p end +:= 1
OD;
IF STRING( newp palindromeend =+ s[1 ) - p start :> p endLENGTH ];result
LENGTH new palindrome > LENGTH result
THEN
# have a longer palindrome #
result := news[ palindromep start : p end ]
FI
FI
3,022

edits