leetcode-有效的括号
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: "()" 输出: true
示例 2:
输入: "()[]{}" 输出: true
示例 3:
输入: "(]" 输出: false
示例 4:
输入: "([)]" 输出: false
示例 5:
输入: "{[]}" 输出: true
思路:显而易见用栈来做。观察可以得到:只把左括号加入栈中,而当遍历的是右括号,则需要判断栈顶元素是否和遍历元素对应,如果对应则将左括号出栈,不对应或者栈为空,则不符合要求。
代码如下:
class Solution { public boolean isValid(String s) { Stack<Character> stack=new Stack(); char[] c=s.toCharArray(); for(int i=0;i<s.length();i++){ if(c[i]=='('||c[i]=='{'||c[i]=='[')stack.push(c[i]); else if(c[i]==')'){ if(!stack.isEmpty()&&stack.peek()=='(')stack.pop(); else return false; }else if(c[i]=='}'){ if(!stack.isEmpty()&&stack.peek()=='{')stack.pop(); else return false; }else if(c[i]==']'){ if(!stack.isEmpty()&&stack.peek()=='[')stack.pop(); else return false; } } if(!stack.isEmpty())return false; //添加元素都是左括号当然不符合要求 return true; } }
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: "()" 输出: true
示例 2:
输入: "()[]{}" 输出: true
示例 3:
输入: "(]" 输出: false
示例 4:
输入: "([)]" 输出: false
示例 5:
输入: "{[]}" 输出: true