См. Сложность времени дикта . Время поиска для dict довольно быстро (в среднем O (1)!). Для этой реализации средняя сложность времени для нахождения самого длинного суффикса будет O (k ^ 2), где k - длина вашего слова. Это k ^ 2 из-за операции ''.join
(потребовалась бы аналогичная операция O (n), например, перевернутая или нарезка строк, поскольку строки не поддерживают операцию аппендифмента O (1)).
Простой способ сделать это (проверено на python 3):
>>> from collections import deque
>>> word = "antidisestablishmentarianism"
>>> suffixes = {'ism': 3, 'anism': 6, 'ment': 4, 'arianism': 12}
>>> suffix = deque()
>>> longest = None
>>> for char in reversed(word):
... suffix.appendleft(char)
... suf = ''.join(suffix)
... if suf in suffixes:
... longest = suf
...
>>> longest
'arianism'