给定一个只包括
'(',')','{','}','[',']'的字符串s,判断字符串是否有效。有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
- public class Zero {
- public static void main(String[] args) {
- Zero zero = new Zero();
- System.out.println(zero.isValid("()"));
- System.out.println(zero.isValid("()[]{}"));
- System.out.println(zero.isValid("(]"));
- }
- //字符对应的数字 (:40 ):41 [:91 ]:93 {:123 }:125
- public boolean isValid(String s) {
- int length = s.length();
- if(length % 2 != 0){
- return false;
- }
- Stack
data = new Stack<>(); - data.push(s.charAt(0));
- for (int i = 1; i < length; i++){
- char now = s.charAt(i);
- if(data.size() != 0) {
- Character temp = data.peek();
- if (temp == now - 1 || temp == now - 2) {
- data.pop();
- } else {
- data.push(now);
- }
- } else {
- data.push(now);
- }
- }
- return data.size() == 0;
- }
- }