博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode:Valid Parentheses - 合理的括号搭配
阅读量:6830 次
发布时间:2019-06-26

本文共 3143 字,大约阅读时间需要 10 分钟。

hot3.png

1、题目名称

Valid Parentheses(合理的括号搭配)

2、题目地址

3、题目内容

英文:Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

中文:给定一个仅包含六种括号的字符串,判断这个字符串中的括号是否按正确的顺序排列。六种括号包括小括号 ( )、中括号 [ ]、大括号 { }

4、解题方法1

一种方式是使用链表记录遇到过的括号,每次找到反括号的时候,检查最后添加的括号是否与当前找到的反括号匹配。

Java代码如下:

import java.util.LinkedList;/** * @功能说明:LeetCode 20 - Valid Parentheses * @开发人员:Tsybius2014 * @开发时间:2015年11月8日 */public class Solution {        /**     * 合理的括号组合     * @param s     * @return     */    public boolean isValid(String s) {               LinkedList
linkedList = new LinkedList
(); for (char ch : s.toCharArray()) { if (ch == '(' || ch == '[' || ch == '{') { linkedList.add(ch); } else if (ch == ')') { if (linkedList.isEmpty() || linkedList.getLast() != '(') { return false; } else { linkedList.removeLast(); } } else if (ch == ']') { if (linkedList.isEmpty() || linkedList.getLast() != '[') { return false; } else { linkedList.removeLast(); } } else if (ch == '}') { if (linkedList.isEmpty() || linkedList.getLast() != '{') { return false; } else { linkedList.removeLast(); } } else { return false; } } return linkedList.isEmpty(); }}

另一种方式是使用栈(Stack)来处理,方式和上一种用链表的方式相似:

import java.util.Stack;/** * @功能说明:LeetCode 20 - Valid Parentheses * @开发人员:Tsybius2014 * @开发时间:2015年11月8日 */public class Solution {        /**     * 合理的括号组合     * @param s     * @return     */    public boolean isValid(String s) {               Stack
stack = new Stack
(); for (char ch : s.toCharArray()) { if (ch == '(') { stack.push(')'); } else if (ch == '[') { stack.push(']'); } else if (ch == '{') { stack.push('}'); } else if (stack.isEmpty() || stack.pop() != ch) { return false; } } return stack.isEmpty(); }}

5、解题方法2

看了讨论区后还发现了另一种解题方法,即使用String类下面的replace方法,不断消除掉相邻的正反括号,最后无法消除时,查看字符串内是否还有残留字符。这种方法实现起来比较简单,但效率比上面写的两种方法低很多。

Java代码如下:

/** * @功能说明:LeetCode 20 - Valid Parentheses * @开发人员:Tsybius2014 * @开发时间:2015年11月8日 */public class Solution {        /**     * 合理的括号组合     * @param s     * @return     */    public boolean isValid(String s) {               int length = s.length();        String stemp;        do {            stemp = s;            s = s.replace("()", "");            s = s.replace("[]", "");            s = s.replace("{}", "");            length = s.length();        } while (length == s.length() && !stemp.equals(s));                return length == 0;    }}

END

转载于:https://my.oschina.net/Tsybius2014/blog/527579

你可能感兴趣的文章
【腾讯优测干货分享】从压测工具谈并发、压力、吞吐量
查看>>
推荐几款好用的书签收藏夹插件-让我们可以稍后阅读
查看>>
JavaScript函数(arguments,this)的理解
查看>>
supervisor安装概述
查看>>
JQ版图片的鼠标放上效果
查看>>
avalon2.1.16发布
查看>>
编程中的那些套路——关于观察者模式
查看>>
Laravel学习笔记之Model Observer模型观察者
查看>>
css3 checked属性写导航目录
查看>>
引用传递和值传递(pass by value vs pass by reference)
查看>>
精益 React 学习指南 (Lean React)- 2.2 webpack
查看>>
献上一套今年的腾讯前端笔试题给大家瞧瞧
查看>>
如何用 Ansible 部署 Kubernetes 集群到 OpenStack
查看>>
数学美 之 判断线段相交的最简方法
查看>>
ubuntu环境下markdown转换成pdf
查看>>
Friday Q&A 2015-11-06:为什么 Swift 中的 String API 如此难用?
查看>>
用命令方式操作mysql
查看>>
iOS设备标识符获取方法
查看>>
[Leetcode] Count and Say 数个数
查看>>
【redis学习二】多php版本下phpredis扩展安装
查看>>