题目描述:
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()"
输出:true
示例 2:输入:s = "()[]{}"
输出:true
示例 3:输入:s = "(]"
输出:false
示例 4:输入:s = "([)]"
输出:false
class Solution {
public boolean isValid(String s) {
char[] arr = s.toCharArray();
Stack<Character> stack = new Stack<Character>();
for (char c : arr) {
if (c=='(' || c =='[' || c == '{'){
stack.push(c);
}
if (c==')') {
if (stack.empty() || stack.pop() != '(')
return false;
}
if (c==']')
if (stack.empty() || stack.pop() != '[')
return false;
if (c=='}')
if (stack.empty() || stack.pop() != '{')
return false;
}
if (stack.empty())
return true;
else
return false;
}
}
解析:题目很明显就是需要用栈来解决问题,利用栈的性质“先进后出”即可。
ps:string.toCharArray()将字符串转化为字符数组,利用Stack<Character>可以表述。