1.题目描述:
- 有效的括号:
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串 是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例1:
输入:s = “()”
输出:true
示例2:
输入:s = “()[]{}”
输出:true
示例3:
输入:s = “(]”
输出:false
2.代码实现:
用栈来解决:
class Solution {
public boolean isValid(String s) {
Stack<Character> stk = new Stack<>();
for(Character c : s.toCharArray()){//将字符转换为字符串数组,进行遍历
//如果 c 是({[ 则进行入栈。
if( c=='(' || c=='{' || c=='['){
stk.push(c);
}//如果 c 是 )}] 且 栈不为空 然后判断栈顶是否为对应的左括号 是就出栈 不是就返回false
else if( c==')' && !stk.empty() && stk.peek() =='('){
stk.pop();
}else if( c=='}' && !stk.empty() && stk.peek() =='{'){
stk.pop();
}else if( c==']' && !stk.empty() && stk.peek() =='['){
stk.pop();
}else {
return false;
}
}
return stk.empty();//该方法的返回类型为boolean,当此Stack为空时返回true,否则返回false。
}
}