Вход: "tableapplechairtablecupboard..." много слов
Что было бы эффективным алгоритмом для разбивки такого текста на список слов и получить:
  Вывод: ["table", "apple", "chair", "table", ["cupboard", ["cup", "board"]], ...]
Прежде всего, что нужно подумать о том, чтобы пройти все возможные слова (начиная с первой буквы) и найти самое длинное слово, продолжить с position=word_position+len(word)
P.S. 
У нас есть список всех возможных слов. 
Слово "шкаф" может быть "чашкой" и "доской", самым длинным.
Язык: python, но главное - сам алгоритм.