在C語言中,字串反轉是一個經典的基礎演算法練習。透過雙指標或索引交換的方式,可以將字元陣列的順序顛倒。以下是一個標準的實作範例:
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;
}
}
a[] 為字元陣列,len 為字串長度len/2),將第 i 個字元與第 len-i-1 個字元交換k 暫存其中一個字元,完成三步驟交換#include <stdio.h>
#include <string.h>
void reverse(char a[], int len);
int main() {
char str[] = "Hello World";
int len = strlen(str);
printf("反轉前: %s\n", str);
reverse(str, len);
printf("反轉後: %s\n", str);
return 0;
}
這個演算法時間複雜度為 O(n),空間複雜度為 O(1),是原地反轉的經典解法。