首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ 字串反轉實作:從基礎演算法到程式碼解析

     編輯:C++ 入門

前言

字串反轉是程式設計中經典的基礎操作之一,常見於面試題目與實際開發需求。本文將透過一個完整的 C++ 範例,詳細解析如何使用雙指標法就地反轉字元陣列,並附上完整原始碼與關鍵步驟說明。

核心演算法:雙指標交換法

最直觀且高效的做法是使用兩個指標分別指向字串的頭尾,然後交換所指字元並向中間移動,直到兩指標相遇。此法時間複雜度為 O(n),空間複雜度為 O(1),是原地反轉的最佳選擇。

完整程式碼實作

/*
version: 1.0
author: hellogiser
blog: https://www.cnblogs.com/hellogiser
date: 2014/5/30
*/
void swap(char *a, char *b)
{
    char temp = *a;
    *a = *b;
    *b = temp;
}

char *reverse_str(char *str)
{
    if (NULL == str)
        return str;
    unsigned int len = strlen(str);
    char *start = str;
    char *end = str + len - 1;
    while (start < end)
    {
        swap(start, end);
        start++;
        end--;
    }
    return str;
}

關鍵點解析

  • 空指標檢查:函式一開始先判斷傳入指標是否為 NULL,避免解參考導致崩潰。
  • 長度計算:使用 strlen 取得字串長度(不含結尾的 \0)。
  • 指標初始化:start 指向首字元,end 指向最後一個有效字元(str + len - 1)。
  • 迴圈條件:start < end 確保只交換到中間為止,避免重複交換或越界。
  • 交換函式:獨立的 swap 函式提高程式碼可讀性與復用性。

測試與驗證

可編寫簡單的 main 函式呼叫 reverse_str 並輸出結果,確認「Hello」變為「olleH」等。建議搭配單元測試框架自動化驗證邊界情況(空字串、單字元、超長字串)。

延伸思考

若使用 C++ 標準庫,只需一行 std::reverse(str, str + strlen(str)) 即可達成相同效果,且經過高度優化。理解底層實作有助於在嵌入式或無標準庫環境下靈活應對。

原文連結

https://www.cnblogs.com/hellogiser/p/reverse-string.html

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved