给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
输入:s = "()" 输出:true
输入:s = "()[]{}" 输出:true
输入:s = "(]" 输出:false
输入:s = "{[]}" 输出:true
解题思路:使用栈,遍历数组,若是判断为左括号则压入相应的右括号,若判断为右括号则弹出栈,若不相同则return false。
class Solution { public boolean isValid(String s) { Stack<Character> stack = new Stack<Character>(); for(char a:s.toCharArray()){ if(a=='('){stack.push(')');} else if(a=='{'){stack.push('}');} else if(a=='['){stack.push(']');} else{ if(stack.empty()||a!=stack.pop()){ return false; } } } return stack.empty(); } }
知识点:
1、Character为字符串类。
2、Stack的方法:push()压入,pop()弹出。