问题介绍
现在给定一堆由组成的字符串,请检测它们是否是有效的组合,如果我们把记为左括号,把记为右括号,即左括号与右括号是否匹配。
解决思路
假设一个字符串为“()([]){}”,那么可以看到,当我们从左到右遍历这个字符串的时候,遇到第一个右括号,则它的左边如果为相应的左括号,就可以消除这一对;如果左边不是对应的左括号,那么这个时候可以直接返回非有效。关键在于怎么消除这一对?我们可以想到用栈来实现,即把所有的左括号都压入栈中,遇到一个右括号,就判断当前栈顶是否是相应的左括号,如果是的话,则弹出;否则,则返回非有效。在遍历结束后,如果栈非空的话,则说明还有未消除的左括号,则说明非有效。
C++实现
领取专属 10元无门槛券
私享最新 技术干货