给定只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
1. 左括号必须用相同类型的右括号闭合。
2. 左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
示例 4:
输入:s = "([)]"
输出:false
示例 5:
输入:s = "{[]}"
输出:true
提示:
1 <= s.length <= 104
s 仅由括号 '()[]{}' 组成
package com.loo;
import java.util.Stack;
public class BracketPairs {
public static void main(String[] args) {
String str = "{{{([()][])}}}";
System.out.println(isBracketPairs(str));
}
public static boolean isBracketPairs(String backet) {
if (backet==null || "".equals(backet.trim())) {
return false;
}
Stack<Character> stack = new Stack<Character>();
char[] c = backet.toCharArray();
if (c!=null && c.length>0) {
for (int i=0;i<c.length;i++) {
if (c[i]=='(' || c[i]=='[' || c[i]=='{') {
stack.push(c[i]);
} else if (c[i]==')') {
if (stack.isEmpty() || stack.peek()!='(') {
return false;
}
stack.pop();
} else if (c[i]==']') {
if (stack.isEmpty() || stack.peek()!='[') {
return false;
}
stack.pop();
} else if (c[i]=='}') {
if (stack.isEmpty() || stack.peek()!='{') {
return false;
}
stack.pop();
}
}
return stack.isEmpty();
}
return false;
}
}