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

C語言字符串就地反轉:雙指針法實現

     編輯:關於C語言

算法

雙指針 i 從頭,len-1-i 從尾,交換字符直到中點。

代碼

[cpp]
void reverse(char a[], int len) {
    char k;
    for (int i = 0; i < len / 2; i++) {
        k = a[i];
        a[i] = a[len - i - 1];
        a[len - i - 1] = k;
    }
}

要點

  • 就地操作,空間 O(1)。
  • 時間 O(n),單次遍歷。
  • 傳入 len 避免在函數內 strlen,適用於含 \0 中間字符的數據。

測試

[cpp]
int main() {
    char s[] = "hello";
    reverse(s, 5);
    printf("%s\n", s); // olleh
    return 0;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved