查看题目详情可点击此处。
题目
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"
输出: true
示例 2:
输入: "()[]{}"
输出: true
示例 3:
输入: "(]"
输出: false
示例 4:
输入: "([)]"
输出: false
示例 5:
输入: "{[]}"
输出: true
解题思路
这题的解题思路没有什么特别之处,主要还是对栈的基本使用,当为左括号时就入栈,当为右括号时就与栈顶匹配,能够正确匹配就进行出栈操作,如果匹配失败就是失效,当遍历完字符串后栈内元素已经清空表示字符串有效。
代码实现
class Solution {
public boolean isValid(String s) {
char[] chars = s.toCharArray();
Stack<Character> stack = new Stack<>();
for(char c : chars) {
if('(' == c || '[' == c || '{' == c) {
stack.push(c);
} else if(stack.size() > 0 && ((')' == c && '(' == stack.peek()) ||
(']' == c && '[' == stack.peek()) ||
('}' == c && '{' == stack.peek()))) {
stack.pop();
} else {
return false;
}
}
return stack.size() == 0;
}
}
网友评论