[問題] LeetCode 151 Reverse Words in a String

看板C_and_CPP作者 (woody)時間8年前 (2017/04/11 10:33), 編輯推噓3(304)
留言7則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) LeetCode 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) LeetCode LeetCode題目連結: https://tinyurl.com/mjfq2ut 我的程式碼連結: http://codepad.org/8lMuU3OD 首先,我利用eliminate_space(s)這個function把input的三種空格清除 1. 第一個word前方的空格,例如: abc def gh 我會把abc前的所有空格刪掉 2. word與word之間兩個以上空格(含兩個)變成一個空格 3. 把最後一個word之後的所有空格清除 執行完eliminate_space(s)後,馬上把字串s印出來看看成果 但是,只要input是" one. +two three? ~four !five- " eliminate_space(s)過後的字串s在LeetCode上就會變成如下圖的Stdout http://i.imgur.com/phltPHy.jpg
但在Codepad和Dev C上的結果都是正確的,也就是 one. +two three? ~four !five- 至於當input是其他字串時,不管在LeetCode、Codepad或是Dev C上都是正確的 有人知道問題出在哪嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.237.81.127 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1491906819.A.F07.html

04/11 18:39, , 1F
strcpy 在字串來源跟目標重疊時是未定義行為
04/11 18:39, 1F

04/11 18:39, , 2F
請另外開一個暫存空間
04/11 18:39, 2F

04/11 19:19, , 3F
沒辦法in place swapping
04/11 19:19, 3F

04/13 02:13, , 4F
try memmove
04/13 02:13, 4F

04/14 12:01, , 5F
這題可以in place, 不過不是用strcpy
04/14 12:01, 5F

04/14 12:03, , 6F
不過O(1)我就真的沒轍了 我怎麼想頂多都是O(log n)
04/14 12:03, 6F

04/14 12:04, , 7F
喔他是說空間複雜度O(1), in-place就是O(1) XD
04/14 12:04, 7F
文章代碼(AID): #1OxB43y7 (C_and_CPP)