donné deux cordes, A et B, de longueur égale, trouvez s'il est possible de diviser les deux cordes au même indice, telles que la fusion de la première partie de A et la seconde une partie de b forme un palindrome. Retourner l'emplacement de la scission. Palindrome est un mot qui lit le même avant vers l'avant. Si la solution ne peut pas être trouvée, renvoyez -1.
Voici ce que j'ai jusqu'à présent p> ma solution renvoie Je ne sais pas quoi changer pour vous assurer que l'index correct est renvoyé. P> P> -1 code> pour Le cas de test, bien qu'il devrait renvoyer 4 code> p>
3 Réponses :
En fonction de votre problème, vous souhaitez fusionner la première partie d'un ( test: p> sortie: p> str1 code>) et la deuxième partie de B ( str2 code>), mais dans votre code que vous " Re fait l'inverse, il suffit de changer les tranches sur str1 code> et str2 code>:
Vous devez également vous inversion de vos mots, puis exécutez votre chèque de cette façon: p>
inverse_word = mot [:: - 1] p>
Vous ne prenez pas correctement la première partie de la première chaîne et la deuxième partie de la deuxième chaîne. Gardez à l'esprit que lorsque vous tranchez une chaîne:
def palindrome(str1, str2):
if len(str1) != len(str2):
raise ValueError('str1 and str2 should have the same length')
for i in range(len(str1)):
firstStr = str1[:i]
secondStr = str2[i:]
if isPalindrome(firstStr + secondStr):
return i
return -1
@ SMAC89, je suis d'accord avec vous qu'il pourrait être inutile de vérifier l'égalité de str1 code> et str2 code>. Je vais mettre à jour ma réponse.