Проверка возможности цепочки списка строк

Вопрос

Реализуйте функцию bool chainable(vector v), которая принимает набор строк в качестве параметров и возвращает true, если они могут быть соединены. Две строки могут быть соединены в цепочку, если первая заканчивается тем же символом, с которого начинается вторая, например:

ship->petal->lion->nick  = true;
ship->petal   axe->elf   = false;

Мое решение:

По моей логике, если строка может быть соединена в цепочку, то только одно начало и конец не совпадают. Поэтому я создаю список начал и список концов. Например.

starts:s,p,l,n
ends:  p,l,n,k

Если я удалю общие элементы, списки должны содержать не более одного элемента, а именно s и k. Если это так, то список цепной. Если список циклический, то конечные списки пусты.

Но мне кажется, что я упускаю некоторые случаи,

EDIT: Очевидно, в моем решении были ошибки. Можем ли мы сделать вывод о лучшем алгоритме для этого?

7
задан Groo 28 January 2012 в 17:36
поделиться