波波老师,你这程序有bug哟,如果传进去的字符串是 ((((aa)) 按理是不符合要求的,但是会返回true哟
来源:3-3 栈的另一个应用:括号匹配
小罗John
2018-08-02
如题,发现一个小bug:
如果传进去的字符串是 ((((aa)) 按理是不符合要求的,但是会返回true哟
写回答
1回答
-
哈哈。赞。
由于在这一小节,我解决的是Leetcode上的20号问题,但是,这个问题本身规定了,字符串中只可能有'(', ')', '[', ']', '{', '}'六种字符。所以相当于已经规定了这个算法输入的前置条件。在写这个算法的时候,我们是不需要对这个前置条件做验证。(我们写二分搜索法的时候是不要验证传来的待搜索数组是有序的,不然所有的二分搜索法都是O(n)的复杂度(验证有序性),或者O(nlogn)的复杂度(进行排序),而非O(logn)了)。
可以理解成,对这个前置条件的满足,应该由调用这个算法之前的步骤满足。换句话说,对于你给定的输出,应该有步骤将其变为“(((())”再传给这个算法。而单就我们规定的这个算法而言,“((((aa))”不是一个合法的输入:)
以上都是我的辩解:)当然在写算法的过程中,能够在不影响性能的基础上“顺便”加入防御性逻辑,是没有问题的:)
022018-08-03
相似问题
波波老师你好,有个问题想请你帮忙解决下
回答 2
波波老师,求指导!
回答 1