leetcode:括号匹配问题

题意很简单,就是给定一系列的(){}[]括号的字符串,让程序检测出括号是否一一对应,比如({)}这样的就是不合格的。

思路还是很简单,就用栈来解决,后进先出,看新的}])元素,是否和栈顶的({[元素匹配。

记录一下自己失误的地方,一个是设定栈的元素类型时,忘了可以直接用string::value_type来取得字符串的元素类型,当然,根据文档显示,value_type即是char类型。

另一个就是严重犯2,判定匹配时居然用等号,curchar==ans.top(),这显然是永不会成立的,毕竟'('和')'怎么可能会相等呢.....

另外一个就是,忘记考虑栈为空的条件,比如只输入一个']',那么显然要判定栈是否为空再用ans.top()。

最后一个就是看论坛大神的优化方法,直接用一个switch语句识别全部类型的字符,省下了很多if-else语句的时间开销

你可能感兴趣的:(leetcode)