У меня есть определенный алгоритм, который нужно реализовать.В основном это следующие правила:
- Первый разделенный пробелами токен в строке будет определяемым словом.
- Более поздние токены будут определением.Если определение «.», То это слово является примитивом, т. Е. Словом без определения.
- Выходными данными является отдельная строка текста, разделенная запятой, содержащая каждое слово в словаре ровно один раз.Каждое слово должно быть напечатано только после всех слов в его определении.Обратите внимание, что для определенных наборов входов может быть несколько допустимых выходов.
Например, вход:
Civic Honda Car
Honda Manufacturer
VW Manufacturer
Manufacturer .
Car .
Beetle VW Car
Некоторые возможные выходы:
Car, Manufactor, Honda, VW, Beetle, Civic
Manufacturer, VW, Car, Beetle, Honda, Civic
Manufacturer, Honda, VW, Car, Beetle, Civic
Моя реализация:
def defIt(pre, cur):
# If previous and current strings are the same, no action take
if pre == cur:
return pre
# Split two strings to list
l_pre = pre.split()
l_cur = cur.split()
# If previous string length is shorter than the current string length, then swap two lists
if len(l_pre) < len(l_cur):
l_pre, l_cur = l_cur, l_pre
found = False
for j, w_cur in enumerate(l_cur):
for i, w_pre in enumerate(l_pre):
if w_pre == w_cur:
found = True
return ' '.join(l_cur[j:] + l_cur[:j] + l_pre[:i] + l_pre[(i + 1):])
if not found:
return ' '.join(l_cur[1:] + [l_cur[0]] + l_pre)
Просто не могу понять это правильно.Чего мне не хватает?Большое спасибо.