请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

波波老师,你这程序有bug哟,如果传进去的字符串是 ((((aa)) 按理是不符合要求的,但是会返回true哟

如题,发现一个小bug:

如果传进去的字符串是 ((((aa)) 按理是不符合要求的,但是会返回true哟

正在回答

1回答

liuyubobobo 2018-08-02 23:44:23

哈哈。赞。


由于在这一小节,我解决的是Leetcode上的20号问题,但是,这个问题本身规定了,字符串中只可能有'(', ')', '[', ']', '{', '}'六种字符。所以相当于已经规定了这个算法输入的前置条件。在写这个算法的时候,我们是不需要对这个前置条件做验证。(我们写二分搜索法的时候是不要验证传来的待搜索数组是有序的,不然所有的二分搜索法都是O(n)的复杂度(验证有序性),或者O(nlogn)的复杂度(进行排序),而非O(logn)了)。


可以理解成,对这个前置条件的满足,应该由调用这个算法之前的步骤满足。换句话说,对于你给定的输出,应该有步骤将其变为“(((())”再传给这个算法。而单就我们规定的这个算法而言,“((((aa))”不是一个合法的输入:)


以上都是我的辩解:)当然在写算法的过程中,能够在不影响性能的基础上“顺便”加入防御性逻辑,是没有问题的:)

0 回复 有任何疑惑可以回复我~
  • 提问者 小罗John #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-08-03 11:51:09
  • 提问者 小罗John #2
    哈哈,我后面也看了一下,发现我记错题目要求了,谢谢老师
    回复 有任何疑惑可以回复我~ 2018-08-03 11:51:51
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信