Trabajando a través de algunos desafíos de entrevista de programación que encontré en línea, tuve que escribir un algoritmo para invertir un const char * y devolver un puntero a un nuevo char *. Creo que lo tengo, pero para que funcione correctamente, tuve que hacer algunas cosas incobrables, básicamente tener que dar cuenta del personaje de terminación nula. De alguna manera siento que esto está mal, pero estoy perplejo, y me preguntaba si alguien me podría ayudar:¿Cómo mejorarías este algoritmo? (Inversión de cadena c)
char * reverse(const char * str)
{
int length = strlen(str);
char * reversed_string = new char[length+1];
for(int i = 0; i < length; ++i)
{
reversed_string[i] = str[(length-1) - i];
}
//need to null terminate the string
reversed_string[length] = '\0';
return reversed_string;
}
int main(int argc, char * argv[])
{
char * rev_str = reverse("Testing");
cout << "Your string reversed is this: " << rev_str << endl;
delete rev_str;
rev_str = 0;
return 0;
}
Debería estar utilizando delete [], not plain delete. –
No olvide verificar si hay una cadena NULL. –
gracias adam y michael, buenos consejos! –