← 回題目列表
c難度 ●●●
把字串反過來(就地反轉)
Python 一行解決:s[::-1]。但那會產生一個新字串,原本的還在。
C 這題要你就地反轉——不另外開一塊空間,直接在原本的陣列裡把字元換位置。
題目
把 word 裡的字元順序反過來。
預期輸出:
反轉前:hello
反轉後:olleh
提示
用兩個索引,一個從頭、一個從尾,交換它們指到的字元,然後一個往右走、一個往左走,在中間相遇時停下。
交換兩個變數的值需要一個暫存變數——C 沒有 Python 的 a, b = b, a。
迴圈條件想清楚:兩個索引相遇時要不要再換一次?
會照出 Python 藏了什麼
Python 的字串不能改。 s[0] = 'x' 會直接報錯,所有「修改字串」的操作其實都是產生新字串。C 的字串是一塊可寫的記憶體,你想改哪一格就改哪一格。
這個差別的代價很實際:Python 在迴圈裡一直 s += c,每一圈都在複製整個字串,字串越長越慢。C 可以直接動原地,但你得自己保證不會寫出界。
別碰結尾的 '\0'。 反轉的範圍只到最後一個字元,把結尾記號也換到前面去,字串就毀了。
本機編譯
gcc main.c -o main.exe
./main.exe
需要先裝好 C 編譯器。Windows 可以用 MinGW-w64 或 w64devkit,macOS 與 Linux 通常內建或用套件管理器安裝。
寫在這裡
C 題不提供線上執行,自己在本機編譯,寫完可以請 AI 看看。
討論區
登入後就能留言和評分。
還沒有人留言。