10115: Automatic Editing ★★☆☆☆ 題組:Problem Set Archive with Online Judge 題號:10115: Automatic Editing 解題者:王于睿 解題日期:2018年3月29日 題意:給一個整數 n,在接下來幾行中,題目會給 n 組關鍵字串與取代字串,最後給一行原字串。由第一組開始,將原字串中的關鍵字串改為取代字串,直到最後一組,執行完再輸出結果即可。重複執行直到收到的 n 為 0。值得注意的是,取代字串可能為空。
題意範例: Input Output 4 behind the goat ban bab baba be ana any ba b hind the g banana boat
題意範例: Input Output 1 ab abab
解法:用 getline(string, num) 取得字串,並將關鍵字串及取代字串,各自存成陣列,再以關鍵字串比對原字串。若相同,則將相同處前的字串複製到暫存字串,再把取代字串複製到暫存字串,把相同處後的字串複製到暫存字串。複製完後,將暫存字串複製回原字串。接著,再從頭檢查是否有關鍵字串,直到換完為止。需注意在連接字串尾時,要記得複製 \0。 Find a b \0 replace b \0 text a b c d e \0 temp
解法:用 getline(string, num) 取得字串,並將關鍵字串及取代字串,各自存成陣列,再以關鍵字串比對原字串。若相同,則將相同處前的字串複製到暫存字串,再把取代字串複製到暫存字串,把相同處後的字串複製到暫存字串。複製完後,將暫存字串複製回原字串。接著,再從頭檢查是否有關鍵字串,直到換完為止。需注意在連接字串尾時,要記得複製 \0。 Find a b \0 replace b \0 a b text a c d e \0 temp a b c d e \0
解法:用 getline(string, num) 取得字串,並將關鍵字串及取代字串,各自存成陣列,再以關鍵字串比對原字串。若相同,則將相同處前的字串複製到暫存字串,再把取代字串複製到暫存字串,把相同處後的字串複製到暫存字串。複製完後,將暫存字串複製回原字串。接著,再從頭檢查是否有關鍵字串,直到換完為止。需注意在連接字串尾時,要記得複製 \0。 Find a b \0 replace b \0 text a b c d e \0 temp a b c d e \0
解法範例:無 討論:gets() vs. getline() : gets()是一個過時的函數,不會判斷讀取的字串長度,可能造成溢位。getline()雖然限制讀取長度,但也相對安全。