作者woody3724 (woody)
看板C_and_CPP
標題[問題] LeetCode 151 Reverse Words in a String
時間Tue Apr 11 18:33:35 2017
開發平台(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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1491906819.A.F07.html
1F:推 LPH66: strcpy 在字串來源跟目標重疊時是未定義行為 04/11 18:39
2F:→ LPH66: 請另外開一個暫存空間 04/11 18:39
3F:推 soheadsome: 沒辦法in place swapping 04/11 19:19
4F:推 s25g5d4: try memmove 04/13 02:13
5F:→ Killercat: 這題可以in place, 不過不是用strcpy 04/14 12:01
6F:→ Killercat: 不過O(1)我就真的沒轍了 我怎麼想頂多都是O(log n) 04/14 12:03
7F:→ Killercat: 喔他是說空間複雜度O(1), in-place就是O(1) XD 04/14 12:04