Lors de l'exécution de mon code pour la tâche donnée, je continue d'obtenir la plus longue chaîne plus la lettre suivante dans l'itération. Par exemple, si j'utilisetrouver la plus longue sous-chaîne de lettres dans l'ordre alphabétique dans une chaîne donnée
s = 'azcbobobegghakl'
J'obtiendrai "beggha"
comme la plus longue chaîne, lorsque la réponse est censée être "beggh"
. Ce même bug se produit pour toutes les chaînes de lettres aléatoires que j'ai essayé.
J'ai compris que la lettre supplémentaire est ajoutée après l'instruction "result + = letters", mais je ne suis pas sûr de savoir comment la réparer. Voici mon code:
s = 'azcbobobegghakl'
result = []
final = []
for letters in s:
result += letters
if result == sorted(result) and len(result) >= len(final):
final=result
elif result != sorted(result):
result = [result[len(result)-1]]
print "".join(final)
Je ne sais vraiment pas pourquoi cette question méritait des downvotes. Bien qu'il s'agisse évidemment de devoirs, le PO a posé une question claire et a fait des efforts pour la résoudre par lui-même. Ne pas connaître les subtilités des opérateurs d'assignation augmentée méritent des downvotes? – timgeb