2016-11-20 2 views
0

У меня есть эта строка: «case» и «ro». Мне нужно получить каждую комбинацию между ними, где я заменяю одиночные буквы второй строки на первую, но только если буква больше, чем другая. Пример: в «rose: r> c, o> a. Другие примеры:« cose »,« roso »,« coso » Я пробовал писать что-то, используя итерацию, но он продолжается бесконечным циклом и не генерирует ничего, если кто-то может помочь мне выяснить более простой способ сделать это, было бы здорово.Смешивание двух строк рекурсивно

+2

Покажите нам, что вы пробовали до сих пор! –

+0

Введите код, и любые ошибки, вы уже видели. – kabanus

ответ

0

Я отвечаю на основании того, что я понял из вопроса. Пожалуйста, проверьте, подходит ли для вас следующий ответ. Если да, то я могу объяснить код позже.

def solve(s1, s2): # prints all combinations of s1 from letters of s2 in a list 
      ans = [s1] 
      if s1=="": 
       return ans 
      tmp = solve(s1[1:],s2) 
      ans += [ s1[0]+x for x in tmp ] 
      for c in s2: 
       if c>s1[0]: 
        ans += [ c+x for x in tmp ] 
      return list(set(ans)) 

print solve("case","ro") 
+0

Да! Да теперь я получил, где я был неправ Спасибо, я в основном перепутал итерацию ... что ame – Alessandro

+0

Вы поняли код? –

+0

да! это ясно – Alessandro

Смежные вопросы