Как написать функцию ,которая будет выделять полиндромы в строке и выводит их ,удаляя одинаковые?

Написать функцию palindrome, которая для заданного числа num возвращает список всех числовых палиндромов, содержащихся в каждом номере. Массив должен быть отсортирован в порядке возрастания, а любые дубликаты должны быть удалены.

Пример:

palindrome(34322122) => [22, 212, 343, 22122]

import traceback


def palindrome(num):
  


# Тесты
try:
    assert palindrome(1551) == [55, 1551]
    assert palindrome(221122) == [11, 22, 2112, 221122]
    assert palindrome(10015885) == [88, 1001, 5885]
    assert palindrome(13598) == []
except AssertionError:
    print("TEST ERROR")
    traceback.print_exc()
else:
    print("TEST PASSED")

Ответы (2 шт):

Автор решения: Zhihar

что мешает решить задачу в лоб за O(n^2) времени?

text = "34322122"

res = set()

for pos in range(len(text) - 1):
    for size in range(2, len(text) - pos + 1):
        block = text[pos: pos + size]
        if block == block[::-1]:
            res.add(block)

print(*res, sep='\n')
→ Ссылка
Автор решения: n1tr0xs

Например, так:

def palindrome(num):
    result = set()
    text = str(num)
    for i in range(len(str(num))):
        for j in range(i+2, len(str(num))+1):
            sub = text[i:j]
            if int(sub) and (sub == sub[::-1]):
                result.add(int(sub))
    return sorted(result)
→ Ссылка