力扣 有效的括号

打印 上一主题 下一主题

主题 982|帖子 982|积分 2946

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
括号匹配题目,找到符合的举行抵消。
题目

从题可以看出是嵌套的括号先匹配先做抵消,类似就近原则,这也是栈的典型例题。可以通过摆列多种差别的情况渐渐用if与else做返回。
时间复杂度:O(n),其中 n 是字符串的长度。空间复杂度:O(n),重要来自栈的空间。
  1. class Solution {
  2.    public boolean isValid(String s) {
  3.         Stack<Character> stack = new Stack<>();
  4.         char[] charArray = s.toCharArray();
  5.         for (char ch : charArray) {
  6.             //如果是左括号则直接入栈
  7.             if (ch == '(' || ch == '{' || ch == '[') {
  8.                 stack.push(ch);
  9.             } else {
  10.                //如果是右括号,并且此时栈不为空
  11.                 if (!stack.isEmpty()) {
  12.                     if (ch == ')') {
  13.                         if (stack.pop() != '(')
  14.                             return false;
  15.                     } else if (ch == '}') {
  16.                         if (stack.pop() != '{')
  17.                             return false;
  18.                     } else {
  19.                         if (stack.pop() != '[')
  20.                             return false;
  21.                     }
  22.                 }
  23.                 else{
  24.                     return false;
  25.                 }
  26.             }
  27.         }
  28.         return stack.isEmpty();
  29.     }
  30. }
复制代码
通过遍历字符串的字符,把左括号入栈,反面加进的在栈顶,再对右括号出栈看是否可以或许匹配,不匹配就阐明无效,最后还要对栈判空,有可能最后栈还有括号阐明有多的没有匹配到也是不符合的。固然,也可以写简洁一些。
  1. class Solution {
  2.     public boolean isValid(String s) {
  3.         if(s.isEmpty())
  4.             return true;
  5.         Stack<Character> stack=new Stack<Character>();
  6.         for(char c:s.toCharArray()){
  7.             if(c=='(')
  8.                 stack.push(')');
  9.             else if(c=='{')
  10.                 stack.push('}');
  11.             else if(c=='[')
  12.                 stack.push(']');
  13.             else if(stack.isEmpty()||c!=stack.pop())
  14.                 return false;
  15.         }
  16.         return stack.isEmpty();
  17.     }
  18. }
复制代码
 


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

渣渣兔

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表