主要是因為兩者演算法上的差異,
由於 char[] 本身並沒有儲存儲存 字串長度/字串結尾位址 的資料,
所以當執行 strcat(s, t) 時,
必需先遍歷一次 s 找到 s 的結尾('\0'),
再將 t 的字元複製至 s 中,
其時間複雜度為 O(|s|+|t|) , (其中|s|代表 s 的字串長度)
假設在合併字串時都合併至同個 大字串S ,
這樣總時間複雜度最糟可能會是 O(|S|^2) , (其中|S|代表大字串長度, 也就是所有字串長度總和)
以本題的範圍來說顯然會 TLE 沒錯~
但如果事先用指標紀錄每個 char[] 結尾的位置,
那麼在合併 s, t 時就不需要遍歷一次 s 來找 s 的結尾('\0'),
可以直接使用指標O(1)查詢 s 的結尾,
於是合併的時間複雜度就降為 O(|t|) ,
這樣一來就算是合併至同個 大字串S ,
由於合併的時間複雜度並不受 |s| 影響,
所以總時間複雜度降為 O(|S|) ~
兩者的演算法事實上並不相同~
所以使用內建 函數/容器 時要看使用時機的唷~
以上路過稍微補充說明~ OwO