字符串翻转的两种方法

第一种方法:数组实现,空间复杂度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)

猜你喜欢

转载自blog.csdn.net/tuoniaoatuoniao/article/details/77679101