📣 独立日限时特惠: VIP通行证立减$68
楼主: tobias0705
跳转到指定楼层
上一主题 下一主题
收起左侧

[Leetcode] 真心照不出错误,在自己电脑上也跑出了所有的可能的结果。

🔗
 楼主| tobias0705 2014-7-22 03:25:49 | 只看该作者
全局:
ralf 发表于 2014-7-22 02:08
楼主试一下输入为" "就知道了

输入了这个没有问题..
回复

使用道具 举报

🔗
 楼主| tobias0705 2014-7-22 03:26:08 | 只看该作者
全局:
ralf 发表于 2014-7-22 02:19
顺便附上自己的删除头尾空格的函数

谢谢啦,我来参考一下。
回复

使用道具 举报

🔗
 楼主| tobias0705 2014-7-22 03:27:41 | 只看该作者
全局:
ralf 发表于 2014-7-22 02:26
另外不建议在leetcode oj里输出到标准输出,类似这种“printf("\nThere is not any words in this sentencs ...

明白啦~谢谢你
回复

使用道具 举报

🔗
luzhuzeng 2014-7-22 05:31:46 | 只看该作者
全局:
一剑终情 发表于 2014-7-21 12:40
虽然说的很好,可是时间复杂度跟run time error没关系啊

哦,抱歉都快忘记了这些错误之间的区别了...可能我说错了吧,楼主见谅
回复

使用道具 举报

🔗
luzhuzeng 2014-7-22 05:31:53 | 只看该作者
全局:
ralf 发表于 2014-7-21 12:41
re一个,算法太慢超时是 time limit exceed

哦,抱歉都快忘记了这些错误之间的区别了...可能我说错了吧,楼主见谅
回复

使用道具 举报

🔗
luzhuzeng 2014-7-22 05:32:46 | 只看该作者
全局:
smzfeng 发表于 2014-7-21 12:37
我的理解是 runtime error和时间复杂度没有关系吧?

哦,抱歉都快忘记了这些错误之间的区别了...可能我说错了吧,楼主见谅
回复

使用道具 举报

🔗
luzhuzeng 2014-7-22 05:51:05 | 只看该作者
全局:
补充一下,我太久不写程序了,SB到把Runtime error都理解错了。楼主和各位大神见谅。又仔细研究了一下lz的代码,觉得可能出问题的地方列一下,大家一起探讨:
(1). while (s.at(0) == ' ') s.erase(0, 1); // Delete the spaces ahead.
这一点如果对于全部是空格的s来说,s.at(0)会不会出问题.查了一下C++中at()函数,"The function automatically checks whether pos is the valid position of a character in the string (i.e., whether pos is less than the string length), throwing an out_of_range exception if it is not." 这样说的话如果s全是空字符,那么最终s的length会变成0,那么s.at(0)就会在内部抛出异常。所以lz可以尝试更改成while(s.length > 0 && s.at(0)==' ')来尽量避免这个;
(2).同样的道理,如果s全是空字符,那么在
if (s.length() != 0)
        {
                while (s.at(0) == ' ') s.erase(0, 1); // Delete the spaces ahead.

                len = s.length();

                while (s.at(len - 1) == ' ') // Delete the space consecutivly.
                {
                        s.erase(len - 1, 1);

                        len = s.length();
                }
这也会有同样的问题,因为此时s.length 是0,也就是len是0,那么你的s.at(len - 1)的定位是-1,应该是错误的;同样的问题会引起erase函数的错误,比如erase怎么能从-1的index开始erase呢?
lz可以先改一下这一点,估计就问题不大了,后面的暂时不分析了。楼主在刚开始分成了s.length 等于0和不等于0两种情况,但是要注意的是,在if(s.length() != 0)这个大括号中,随时会出现s.length() == 0的情况,所以在这个if语句中也要随时注意判断s的长度是否为0,否则就容易出错。这题本来就不难,考察的就是细节以及你是否思维缜密,你用那么多函数意义真不大,分析起来时间空间复杂度都不容易,直接利用c的类似指针的东西从头到尾来一遍就行了,另外弄一个大小一样的字符串,o(n)时间+O(n)空间很容易就出来了(如果你要优化空间的话另说)。一点个人看法,说错了见谅,一起讨论
回复

使用道具 举报

🔗
lyl 2014-7-22 07:19:48 | 只看该作者
全局:
luzhuzeng 发表于 2014-7-22 02:29
没有仔细分析楼主的逻辑,但是一看楼主的代码就知道run time error问题在哪了。楼主在代码中用到了很多C++ ...

对不起 我笑了。。。
回复

使用道具 举报

🔗
lzd1127 2014-7-22 07:24:47 | 只看该作者
全局:
lyl 发表于 2014-7-22 07:19
对不起 我笑了。。。

笑啥?有空笑,不能给点insights?
回复

使用道具 举报

🔗
dumpsterfire 2014-7-22 08:27:46 | 只看该作者
全局:
lyl 发表于 2014-7-22 07:19
对不起 我笑了。。。

虽然有点离题,但不说的挺好的嘛。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表