有效的括号

问题:

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

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

解析:

class Solution {

  private HashMap<Character, Character> mappings;
  public Solution() {
    this.mappings = new HashMap<Character, Character>();
    this.mappings.put(')', '(');
    this.mappings.put('}', '{');
    this.mappings.put(']', '[');
  }

  public boolean isValid(String s) {

    Stack<Character> stack = new Stack<Character>();

    for (int i = 0; i < s.length(); i++) {
      char c = s.charAt(i);

      // 如果是右边的括号(闭)
      if (this.mappings.containsKey(c)) {

        // 压出栈中的一个左括号
        char topElement = stack.empty() ? '#' : stack.pop();

        // 进行对比
        if (topElement != this.mappings.get(c)) {
          return false;
        }
      } else {
        //左括号则进栈
        stack.push(c);
      }
    }

    // 非空栈则说明有左括号没有匹配成功
    return stack.isEmpty();
  }
}
全部评论
点赞 回复 分享
发布于 09-20 16:18 广东

相关推荐

notbeentak...:孩子,说实话,选择很重要,可能你换一个方向会好很多,但是现在时间不太够了,除非准备春招
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务