2016-11-20 1 views
0

Ich habe diese Zeichenfolgen: "case" und "ro". Ich muss jede Kombination zwischen ihnen erhalten, wobei ich die einzelnen Buchstaben der zweiten Zeichenfolge in die erste Zeile einfüge, aber nur, wenn der Buchstabe größer als der andere ist. Bsp: in "rose: r> c, o> a. Andere Beispiele sind:" cose "," roso "," coso " Ich habe versucht, etwas zu schreiben, mit Iteration, aber es geht auf eine Endlosschleife und erzeugt nicht Wenn jemand mir helfen kann, einen einfacheren Weg zu finden, wäre das großartig.Zwei Strings rekursiv mischen

+2

uns zeigen, was Sie bisher versucht haben! –

+0

Bitte geben Sie Ihren Code und Fehler haben Sie gesehen. – kabanus

Antwort

0

Ich antworte auf der Basis dessen, was ich von der Frage verstanden habe. Bitte überprüfen Sie, ob die folgende Antwort für Sie richtig ist. wenn ja, dann kann ich später den Code erklären.

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

Ja! Oh jetzt habe ich, wo ich war falsch Danke, ich habe die Iteration durcheinander gebracht ... was für ein Sh ame – Alessandro

+0

hast du den Code verstanden? –

+0

ja! es ist klar – Alessandro