看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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
LPH66: strcpy 在字串來源跟目標重疊時是未定義行為 04/11 18:39
LPH66: 請另外開一個暫存空間 04/11 18:39
soheadsome: 沒辦法in place swapping 04/11 19:19
s25g5d4: try memmove 04/13 02:13
Killercat: 這題可以in place, 不過不是用strcpy 04/14 12:01
Killercat: 不過O(1)我就真的沒轍了 我怎麼想頂多都是O(log n) 04/14 12:03
Killercat: 喔他是說空間複雜度O(1), in-place就是O(1) XD 04/14 12:04