Je pratique un défi de codage où je dois pourriez-vous expliquer pourquoi ma première méthode a échoué les tests, mais la deuxième méthode passa les tests P> P> inverser les voyelles dans une chaîne code>. Ma première approche a échoué à cause de la limite de temps précédente. Code> My première approche utilisant une itération de chaîne pour inverser les voyelles dans une chaîne. P> Ma deuxième approche en utilisant l'itération du vecteur de charme avait passé tous les tests. CODE> ICI est ma deuxième approche p>
3 Réponses :
remplacer str = str + x; code> avec str.push_back (x); code> ou str + = x; code>, et vous Vérifiez probablement la même performance que possible avec vecteur code>. p>
str = str + x; code> fait une copie de STR code>, ajoute le caractère à cette copie, puis apporte une autre copie lors de l'attribution de STR code>. En conséquence, votre algorithme est quadratique, sans bonne raison. P>
C'est parce que vous faites str = str + x code>, qui crée une copie inutile de str code>, mais std :: vecteur :: push_back Code> ou std :: string :: push_back code> appendez un caractère au vecteur ou à la chaîne, ce qui est beaucoup plus rapide que de créer une copie de STR code>. P>
str = str + x code>
Cela crée une copie supplémentaire de STR lors de la copie.
std :: vecteur :: push_back code>
Cette ligne droite ajoute à la chaîne de vecteur p>