iT邦幫忙

2025 iThome 鐵人賽

DAY 24
0
Software Development

用leetcode系統化學習C語言系列 第 24

字串與指標的結合

  • 分享至 

  • xImage
  •  

前幾篇練的題目大多是「數字陣列」操作,但 C 語言的靈魂之一其實是「字串處理」。
這篇選擇LeetCode 1528 Shuffle String練習,該題可以讓我們熟悉 字元陣列 (char array) 與 指標操作 的結合,知道如何根據索引重新排列字串內容。同時,也能開始理解「陣列」與「字串」在記憶體中的關聯。

🧠 題目說明
給定一個字串 s 和一個整數陣列 indices,重新排列字串中的字元,使得每個字元位於 indices[i] 指定的位置。
範例
輸入:s = "codeleet", indices = [4,5,6,7,0,2,1,3];輸出:"leetcode"
解釋
s[0]='c' 會放到位置 4,s[1]='o' 放到位置 5,依此類推,最後組合成 "leetcode"。

🧩 解題思路
1️⃣ 建立一個新的結果字串陣列
因為重新排列後字元位置改變,不能直接修改原本字串。
所以先配置一個新的字元陣列,用來存放最終結果。
2️⃣ 使用指標操作進行重排
透過 *(indices + i) 取得每個字元的新位置,
再用 *(result + newIndex) = *(s + i) 這樣的方式將字元放入對應位置。
這樣能強化我對「指標位移操作」的理解。
3️⃣ 補上字串結尾符號 '\0'
C 語言的字串必須以 '\0' 結尾,這是非常關鍵的細節。
少了這一步,輸出就會亂掉或造成記憶體錯誤。
https://ithelp.ithome.com.tw/upload/images/20251008/20169489VAK0tb9RyZ.png


上一篇
指標回傳新陣列
系列文
用leetcode系統化學習C語言24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言