作者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/cn.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