字符串匹配问题
题目描述:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
这道题无疑用栈能够更好的解决问题,但是首先得明白它几个案例
方法:
- 1.遍历当前字符串,如果是左括号就入栈
- 2.当 当前的字符串的字符是右括号,那么和当前栈顶的元素的括号进行批匹配,如果匹配成功,那么直接将栈顶出栈。
- 3.当i下标对应的字符串和栈顶的字符串不能够匹配的时候,那么说明,右括号匹配错位
- 4.当遍历结束后,如果i下标已经没有元素,此时栈内为空,那么字符串就完成匹配
- 4.1如果i下标还有元素,但是栈内为空,说明此时右括号多,此时匹配失败
- 4.2如果i下标没有元素,但是栈内还有元素,说明此时左括号多,此时也匹配失败
代码实现
public static boolean isValid(String s) {
Stack<Character> stack = new Stack<>();<