题目:有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
public boolean isValid(String s) { Stack<Character> stack = new Stack<Character>(); for (int i = 0; i < s.length(); ++ i) { switch (s.charAt(i)) { case ')': if (stack.isEmpty() || !stack.pop().equals('(')) return false; break; case ']': if (stack.isEmpty() || !stack.pop().equals('[')) return false; break; case '}': if (stack.isEmpty() || !stack.pop().equals('{')) return false; break; default: stack.push(s.charAt(i)); break; } } return stack.isEmpty(); }
思路:
这是一道典型的可以用栈来解决的问题,类似的问题有 表达式求解等。
做一个空栈,一个个读入字符直到字符串结尾;
如果字符是一个开放符号(‘(’,’[’,’{’),则将其推入栈中。
如果字符是一个封闭符号(‘)’,’]’,’}’),则
当栈空时放回false;当栈不为空时,元素弹出,如果弹出的符号不是对应的开放符号,则返回false;
全部遍历完毕后,如果栈为空则返回true,栈非空则返回false。

本文介绍了一种使用栈数据结构实现的有效括号匹配算法。通过遍历输入字符串中的括号,并利用栈来跟踪开括号的位置,该算法能够高效地判断括号是否正确配对。
269

被折叠的 条评论
为什么被折叠?



