当前位置: 首页 > news >正文

LeetCode(20)判断字符串合法括号

问题

Given a string containing just the characters '('')''{''}''[' and ']', determine if the input string is valid.

An input string is valid if:

  1. Open brackets must be closed by the same type of brackets.
  2. Open brackets must be closed in the correct order.

Note that an empty string is also considered valid.

解决,考虑使用栈的先进后出特性来存放这个字符串。将字符串中字符从头开始入栈,如果栈空,则直接入栈。如果非空,则判断栈顶字符。根据不同的情况,判断是否与当前字符与栈顶字符是否构成一个完整的括号。如果是,则栈顶出栈,如果不是,则当前字符入栈。最后,返回栈是否非空,空,表明是合法括号字符串;非空,则有多余的字符不够成合法括号字符串。注意,对于参数的特性情况的判断。

java解决

class Solution {
    public boolean isValid(String s) {
        // 参数合法性判断
        if(s == null){
            return false;
        }
        int size = s.length();
        if (size < 1 || s.equals("")) {
            return true;
        }
        // 以链表作为栈
        LinkedList<Character> stack = new LinkedList<Character>();
        for (int i = 0; i < size; i++) {
            char tmp = s.charAt(i);
            if (stack.size() == 0) {
                stack.push(tmp);
            } else {
                char top = stack.getFirst();
                if (top == '(') {
                    if (tmp == ')') {
                        stack.pop();
                    } else {
                        stack.push(tmp);
                    }
                } else if (top == '[') {
                    if (tmp == ']') {
                        stack.pop();
                    } else {
                        stack.push(tmp);
                    }
                } else if (top == '{') {
                    if (tmp == '}') {
                        stack.pop();
                    } else {
                        stack.push(tmp);
                    }
                } else {
                    return false;
                }
            }
        }
        return stack.isEmpty();
    }
}

 

相关文章:

  • spring整合jbpm的简述
  • nginx反向代理tomcat一段时间后出现的ERR_CONTENT_LENGTH_MISMATCH异常
  • cas简介
  • [one_demo_15]模拟交通灯管理系统
  • jquery easyui datagrid columns日期格式化问题
  • jquery使用$(xx).text()与字符串比较,明明看着相等,结果却为false
  • 联合使用jsp标签和struts的标签在jsp页面获取当前时间
  • 从iframe框架进入登录页面时跳出iframe到顶层页面
  • springboot简介
  • jpa
  • LintCode(22)将一个嵌套集合按照原顺序处理为Integer集合
  • [one_demo_16]直接插入排序的demo
  • [one_demo_17]使用传统方式实现线程间通信的例子
  • ThreadLocal
  • [one_demo_18]js定时器的示例
  • 【刷算法】从上往下打印二叉树
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • CEF与代理
  • eclipse(luna)创建web工程
  • extjs4学习之配置
  • IDEA 插件开发入门教程
  • SpiderData 2019年2月16日 DApp数据排行榜
  • Vim 折腾记
  • windows下使用nginx调试简介
  • 搞机器学习要哪些技能
  • 批量截取pdf文件
  • 如何进阶一名有竞争力的程序员?
  • 小程序01:wepy框架整合iview webapp UI
  • 一个完整Java Web项目背后的密码
  • ionic异常记录
  • postgresql行列转换函数
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 大数据全解:定义、价值及挑战
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • #QT(智能家居界面-界面切换)
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (11)MSP430F5529 定时器B
  • (4)Elastix图像配准:3D图像
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (七)Java对象在Hibernate持久化层的状态
  • (十)T检验-第一部分
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (转)3D模板阴影原理
  • ***监测系统的构建(chkrootkit )
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .net core 连接数据库,通过数据库生成Modell
  • .NET 读取 JSON格式的数据
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET构架之我见
  • /var/lib/dpkg/lock 锁定问题