第一种方法:数组实现,空间复杂度O(1)
char* str_reverse(char* str)
{
int len = strlen(str);
for (int i = 0; i < len / 2; ++i)
{
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
return str;
}
第二种方法:指针实现
char* str_reverse(char* str)
{
int len = strlen(str);
char* temp = (char*)malloc(len + 1);
char* strDest = temp;
for (int i = len - 1; i >= 0; --i)
{
*strDest++ = str[i];
}
*strDest = '\0';
return temp;
}
第二种在调用函数的过程中开辟了临时空间,故空间复杂度已不是O(1)