19.9.16 有效的括号 简单 (需修改)


题目:

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。

示例 1:

输入: "()"输出: true示例 2:

输入: "()[]{}"输出: true示例 3:

输入: "(]"输出: false示例 4:

输入: "([)]"输出: false示例 5:

输入: "{[]}"输出: true

代码:

 1 import java.util.Stack;
 2 class Solution {
 3     public boolean isValid(String s) {
 4         char[] brackets = s.toCharArray();
 5         Stack<Character> save = new Stack<Character>();
 6         int flag = 1;
 7         for(int i = 0; i < brackets.length; i++){
 8             switch(brackets[i]){
 9                 case '(':
10                 case '{':
11                 case '[':
12                     save.push(brackets[i]);
13                     break;
14                 case ')':
15                     if(!save.empty() && save.peek() == '(')
16                         save.pop();
17                     else flag = 0;
18                     break;
19                 case '}':
20                     if(!save.empty() && save.peek() == '{')
21                         save.pop();
22                     else flag = 0;
23                     break;
24                 case ']':
25                     if(!save.empty() && save.peek() == '[')
26                         save.pop();
27                     else flag = 0;
28                     break;
29             }
30         }
31         if(save.empty() && flag == 1) return true;
32         else return false;
33     }
34 }

心得:

1、今天刚学了栈的理论,晚上回来尝试一下。

理论过程都能懂,就是java的语法不熟悉,上网搜了很多语法知识用上了,就过了。题目没有什么难度。

2、时间复杂度很高,以后再修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值