LeetCode 20有效的括号
200 Words|Read in about 1 Min|本文总阅读量次
leetcode第20题,有效的括号。采用栈来完成。
LeetCode 20有效的括号
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
示例 1:
1输入:s = "()"
2输出:true
示例 2:
1输入:s = "()[]{}"
2输出:true
示例 3:
1输入:s = "(]"
2输出:false
提示:
1 <= s.length <= 104
s
仅由括号'()[]{}'
组成
思路
这种先进后出的顺序,需要用到栈的数据结构
解题
1class Solution {
2 public boolean isValid(String s) {
3 //LinkedList同时实现了List接口和Deque对口
4 //也就是收它既可以看作一个顺序容器
5 //又可以看作一个队列(Queue)
6 //同时又可以看作一个栈(stack)
7 Deque<Character> stack = new LinkedList<Character>();
8 //java String中的单个字符的操作
9 //String.toCharArray()把整个String转成 char[] 数组,然后就可以按着数组的方式处理
10 //使用String.charAt(i)函数,也可以实现字符串的处理。
11 for(char i : s.toCharArray())
12 {
13 if('(' == i)
14 {
15 stack.push(')');
16 }else if('[' == i)
17 {
18 stack.push(']');
19 }else if('{' == i)
20 {
21 stack.push('}');
22 }else if(stack.isEmpty() || stack.pop() != i)
23 {
24 return false;
25 }
26 }
27 return stack.isEmpty();
28
29 }
30}