Ce défi dans Hackerrank est de déplacer la chaîne en utilisant Python et de renvoyer la chaîne. J'ai une fonction qui prend 3 arguments.
def getShiftedString(s, leftShifts, rightShifts): # Left shift the string l1 = s[0:leftShifts] l2 = s[len(s)-leftShifts:] s1 = l2+l1 # Right shift the string r1 = s1[0:len(s)-rightShifts] r2 = s1[len(s)-rightShifts:] s = r2+r1 return s
leftShifts
& rightShifts
étant des entiers> 0 et "string"
est toujours des caractères minuscules.
Décalage à gauche: une seule rotation circulaire de la chaîne dans laquelle le premier caractère devient le dernier caractère et tous les autres caractères sont décalés d'un index vers la gauche. Par exemple, abcde devient bcdea après 1 décalage à gauche et cdeab après 2 décalages à gauche.
Décalage à droite: une seule rotation circulaire de la chaîne dans laquelle le dernier caractère devient le premier caractère et tous les autres caractères sont décalés vers la droite. Par exemple, abcde devient eabcd après 1 décalage à droite et deabc après 2 décalages à droite.
Je n'ai réussi que 4 cas de test sur 14. Voici ma solution. S'il vous plaît laissez-moi savoir la meilleure solution.
shiftStrings("string", leftShifts, rightShifts);
3 Réponses :
Vous devez modifier la ligne suivante:
def getShiftedString(s, leftShifts, rightShifts): return (s*3)[len(s)+rightShifts-leftShifts:2*len(s)+rightShifts-leftShifts]
à
l2 = s[leftShifts:]
Vous pouvez également implémenter la fonction sur une seule ligne:
l2 = s[len(s)-leftShifts:]
J'ai essayé avec l'entrée ci-dessous, mais la sortie n'était pas comme prévu.
shifted = getShiftedString ('abcdefghijklmnopqrstuv', 5, 2) print (décalé)
Oui, la modification de l2 = s [leftShifts:] a fonctionné comme prévu
def getShiftedString(s, leftShifts, rightShifts): i = (leftShifts - rightShifts) % len(s) return s[i:] + s[:i]
def getShiftedString(s, leftShifts, rightShifts): total_shift = leftShifts - rightShifts if len(s) < total_shift: total_shift = total_shift - len(s) if total_shift > 0: s = s[total_shift:] + s[:total_shift] elif total_shift < 0: s = s[total_shift:] + s[:total_shift] else: return s return s
Quel est le problème, exactement? Voici ma solution. Veuillez me faire part de la meilleure solution Attendez-vous vraiment que les gens fassent tout pour vous? Les noms de variables et de fonctions doivent généralement suivre le style
lower_case_with_underscores
.