經過前幾篇的練習,我們已經慢慢熟悉了陣列與指標的基本概念,今天要挑戰一個結合指標與 malloc 的經典題目:LeetCode 1108. Defanging an IP Address
💡 題目說明
給定一個字串形式的 IP 位址,例如:"1.1.1.1"要將其中的 . 替換成 [.],變成:"1[.]1[.]1[.]1"
🧩 解題思路
這題可以視為「重新建立新字串」的過程,我們可以這樣想:
先掃描原字串 address,統計 . 的數量,因為每個 . 會變成三個字元 [.],所以要多出兩個字元的空間
新字串長度 = 原字串長度 + 2 * (dot 的數量) + 1(記得最後的 \0),使用 malloc 配置新字串的空間
使用兩個指標:
p:指向原字串(用來讀取); q:指向新字串(用來寫入)
當 *p 不為 \0 若是 .,就依序寫入 '['、'.'、']',否則直接複製字元 並讓 p、q 同時往後移動
最後在新字串尾端加上 \0,回傳結果。
🧭 學習重點
這題讓我更熟悉了: