题目
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
方法一,利用栈
遍历字符串的每一个字符,如果是左括号,则进栈,如果是右括号,则与栈顶元素比较,看是否匹配,并且栈顶元素出栈
public boolean isValid(String s) { Stack<Character> stack = new Stack(); char[] ss = s.toCharArray(); for (int i=0;i<ss.length;i++){ if (ss[i]=='(' || ss[i]=='{' || ss[i]=='['){ stack.push(ss[i]); }else if (ss[i]==')' || ss[i]=='}' || ss[i]==']'){ // c是栈顶元素 if (stack.empty()) return false; else { char c = stack.pop(); switch (c){ case '(': if (ss[i]!=')') return false; break; case '{': if (ss[i]!='}') return false; break; case '[': if (ss[i]!=']') return false; break; } } } } if (stack.empty()) return true; else return false; }