雙指針 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;
}