第一種方法:數組實現,空間複雜度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)