Java括号匹配举例详解
一、题目描述
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
示例:
输入:s = "()"
输出:true
输入:s = "(]"
输出:false
二、题解
思路分析:
我们可以使用栈来解决这个问题:
遍历字符串,如果是左括号,就将其入栈;
如果是右括号,就将栈顶元素弹出,判断是否是与其匹配的左括号,
若栈中无元素可以弹出,则无能与该右括号匹配的左括号,返回false,
若不是与其匹配的左括号,返回false,
若是与其匹配的左括号,则继续遍历下一个字符。
当循环结束时,判断栈是否为空,
若栈不为空,则表明还有未匹配的左括号,返回false,
若栈为空,则表示所有的左括号都与相同类型的右括号匹配,返回true
代码实现:
class Solution { public boolean isValid(String s) { Stack<Character> stack = new Stack<>(); for (int i = 0; i < s.length(); i++) { //判断是否是左括号 char ch = s.charAt(i); if(ch == '(' || ch == '[' || ch == '{'){ stack.push(ch); }else { //右括号,出栈 //无左括号能够匹配,返回false if(stack.empty()){ return false; } char ch2 = stack.pop(); if((ch2 == '(' && ch == ')') || (ch2 == '[' && ch == ']') || (ch2 == '{' && ch == '}')){ }else { return false; } } } return stack.empty(); } }
题目来自:
总结
到此这篇关于Java括号匹配的文章就介绍到这了,更多相关Java括号匹配内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
mybatis源码解读-Java中executor包的语句处理功能
这篇文章主要介绍了Java中executor包的语句处理功能,在mybatis映射文件中传参数,主要用到#{}或者${},下文围绕相关资料展开详细内容,需要的小伙伴可以参考一下2022-02-02Spring Boot中使用Spring-data-jpa的配置方法详解
今天小编就为大家分享一篇关于Spring Boot中使用Spring-data-jpa的配置方法详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2019-03-03Spring-Cloud Eureka注册中心实现高可用搭建
这篇文章主要介绍了Spring-Cloud Eureka注册中心实现高可用搭建,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-04-04SpringBoot项目中使用@Scheduled读取动态参数
这篇文章主要介绍了SpringBoot项目中使用@Scheduled读取动态参数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-11-11SpringBoot 整合Mybatis-Plus并输出SQL日志示例详解
这篇文章主要介绍了SpringBoot整合Mybatis-Plus并输出SQL日志,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-06-06解决 Spring RestTemplate post传递参数时报错问题
本文详解说明了RestTemplate post传递参数时报错的问题及其原由,需要的朋友可以参考下2020-02-02新建Maven工程出现Process Terminated的问题解决
当Maven出现"Process terminated"错误时,这通常是由于配置文件或路径错误导致的,本文主要介绍了新建Maven工程出现Process Terminated的问题解决,感兴趣的可以了解一下2024-04-04
最新评论