[()]] 这个修改老师是不是讲错了 if (str[i] != currentNeed) else pNeedStack->pop(currentNeed) 当第四个结束后 currentNeed就pop出来等于‘】’了 然后又不满足上面的IF 所以跳到else 直接空了
2017-10-02
接上,最后检测栈长和matching ,栈长==0 &&matching 则匹配,否则不匹配。
这样写可以跳过中间的空格等无关字符(实际应用也多半如此)。如果要求异常字符直接不匹配,可以修改default。亲自编码检测。欢迎探讨。
这样写可以跳过中间的空格等无关字符(实际应用也多半如此)。如果要求异常字符直接不匹配,可以修改default。亲自编码检测。欢迎探讨。
2017-09-27
我只用了一个栈实现的,就是“wjxdsg”小伙伴说的思路。简要叙述一下细节,给个参考:
首先定义一个变量matching表示当前是否匹配(初值为true),循环遍历整个字符数组,循环中用switch语句,如果是左括号就入栈,右括号就出栈,将出栈字符与目前字符匹配,如果匹配,则break,不匹配则将matching赋为false后break。(注意这里同样需要考虑前面括号都匹配,而末尾出现右括号的情况,所以必须在出栈前检测站是否为空,为空就将matching赋为false,break)。default直接break(跳过无关字符),switch后检测matching,为false则跳出循环。接下
首先定义一个变量matching表示当前是否匹配(初值为true),循环遍历整个字符数组,循环中用switch语句,如果是左括号就入栈,右括号就出栈,将出栈字符与目前字符匹配,如果匹配,则break,不匹配则将matching赋为false后break。(注意这里同样需要考虑前面括号都匹配,而末尾出现右括号的情况,所以必须在出栈前检测站是否为空,为空就将matching赋为false,break)。default直接break(跳过无关字符),switch后检测matching,为false则跳出循环。接下
2017-09-27