题目描述:
给定一个只包括 '(',')','{','}','[',']'?的字符串 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>可以表述。
|