美文网首页
LeetCode_20_有效的括号数

LeetCode_20_有效的括号数

作者: NWPU_HaiboWu | 来源:发表于2020-02-07 21:03 被阅读0次

1.题目描述

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

2.思路分析

这个题,我上编译原理课的时候,有做过类似的工作,所以印象比较深。我们大致要考虑到一下几个点:
①为了判断一致性,我们可以用HashMap来存放一堆括号
②在判断的开始:
(1)字符串的长度一定要是2的倍数
(2)一定是要先有左括号,再有右括号
③这种先进后比较的方式,————栈结构
(1)如果当前是左括号,进栈
(2)如果当前是右括号,出栈,进行比较
(3)判断完所有的字符,如果栈中没有元素,则返回true
注意:这里有一个空指针异常,如果当前是右括号,没有元素能够出栈,预先判断!

3.代码实现

 public boolean isValid(String s) {
          
          if(s.length()%2!=0)return false;
          boolean flag = true;
        Map<Character, Character> hashMap = new HashMap<>();
        hashMap.put('(', ')');
        hashMap.put('[', ']');
        hashMap.put('{', '}');

        Stack<Character> stack = new Stack();

        
        for (int i = 0; i < s.length(); i++) {
            if(stack.isEmpty()&&!hashMap.containsKey(s.charAt(i))){
                flag=false;
                return flag;
            }
            if(hashMap.containsKey(s.charAt(i))){
                stack.push(s.charAt(i));
            }else{
                if(hashMap.get(stack.pop())==s.charAt(i)){
                    continue;
                }else {
                    flag=false;
                    return flag;
                }
            }
        }
        if(!stack.isEmpty()){
            flag=false;
        }
        return flag;
    }

相关文章

  • LeetCode_20_有效的括号数

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

  • 22 括号生成

    自己解法 核心思想是已生成的括号字符串里,左括号数要大于等于右括号数,然后使用递归的思想,每一步可以走不同的左右括...

  • 【LeetCode】1021. 删除最外层的括号

    题目描述 有效括号字符串为空 ("")、"(" + A + ")" 或 A + B,其中 A 和 B 都是有效的括...

  • 算法面试题

    基础 两数之和[http://leetcode-cn.com/problems/two-sum](简单) 有效的括...

  • 字符串

    一.字符串 1.什么是字符串 使用单引号或者双引号括起来的字符串 引号中的单独的符号数字字母等叫做字符 2.转义字...

  • 常用的特性

    属性可以放置在几乎所有声明中(但特定的属性可能限制它在其上有效的声明类型)。在语法上,属性的指定方法为:将括在方括...

  • leetcode第20题:有效的括号数

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

  • 2_有符号和无符号

    关键词:计算机中的符号位、有符号数的表示法、无符号数的表示法、signed和unsigned、无符号数和有符号数的...

  • 要成功就做一百题-92

    题目名称 括号生成 描述 难度属于中等,目的是根据给定的括号数,生成有效的括号集合。 解题思路 这题比较有意思,这...

  • 补码解释

    补码是最常见的有符号数的计算机表示方式。在这个定义中,将字的最高有效位解释为负权(negative weight)...

网友评论

      本文标题:LeetCode_20_有效的括号数

      本文链接:https://www.haomeiwen.com/subject/ibvvxhtx.html