Калима ва оинаи он
Калима палиндром аст, вақте аз чап ба рост ва аз рост ба чап якхела хонда мешавад. Дар Python s[::-1] сатри баръакс аст. Пас калима палиндром аст, танҳо вақте ки s == s[::-1].
Муқоиса аз рӯи кодҳои рамзҳо мешавад. Бинобар ин "L" ва "l" рамзҳои гуногунанд ва Level палиндром нест, то он даме ки бо lower() тамоман хурд карда шавад:
Вуруд
Баромад
Буриш танҳо «ҳа» ё «не» медиҳад. Вақте бештар лозим аст, масалан аввалин ҷое, ки дар он ду нисф фарқ мекунанд, барои нисфи аввали индексҳо s[i]-ро бо оинаи он s[len(s) - 1 - i] муқоиса кунед.
Силсилаҳо
Силсила порчаи рамзҳои якхела аст, ки паҳлӯ ба паҳлӯ меистанд. Дар aabbbcbb чор силсила ҳаст: aa, bbb, c ва bb.
Барои ёфтани силсилаи дарозтарин ҳар рамзро бо рамзи пеш аз он муқоиса кунед. То даме ки онҳо баробаранд, силсила меафзояд. Вақте баробар нестанд, силсилаи нав сар мешавад ва дарозиаш 1 аст:
Вуруд
Баромад
Се ҷузъиёт муайян мекунад, ки барнома дуруст аст ё не:
runваbestаз 1 сар мешаванд, чунки сатр ақаллан як рамз дорад ва давр аз индекси 1 оғоз меёбад.- Силсилаи нав аз 1 сар мешавад, на аз 0. Рамзи нав аллакай як рамзи силсилаи нав аст.
best = max(best, run)баъд азif, дар дохили давр меистад. Силсилаи дар охири сатр ҳеҷ гоҳ ба рамзи дигар намерасад, бинобар ин онро бояд ҳангоми афзуданаш ҳисоб кард.
Ҳар силсиларо менависем
Акнун ҳар силсиларо бо ҳарф ва дарозиаш менависем. Ин рамзгузории дарозии силсилаҳо номида мешавад: aaabcc ба a3b1c2 табдил меёбад. Силсила вақте тайёр аст, ки тамом мешавад. Он дар охирин индекс ё дар ҷое тамом мешавад, ки рамзи баъдӣ дигар аст. Қадам ба қадам гузаред: