字符串翻轉的兩種方法

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章