括号匹配Java实现
来源:互联网 发布:淘宝小样四大靠谱店 编辑:程序博客网 时间:2024/06/07 21:10
给定一串只有左右括号的字符串要求判断该字符串是否完全匹配,这是括号匹配中最简单的题目,很多解法是基于堆栈实现的,堆栈实际需要O(n)的空间复杂度,实际上这道题用O(1)的空间负复杂度完全可以实现,基本原理等同于堆栈实现。
思路就是设置一个变量count当遇到左括号的时候+1,遇到右括号的时候-1,一旦在遍历的过程中出现了非左右括号或者count为负数的时候,直接返回false。当遍历结束的时候若count为0,则返回true,否则返回false。
这里解释一下为什么出现count小于0的时候就为false,因为一旦出现了负数,意味着当前出现了一个右括号,但前面没有一个左括号与之相匹配。
再解释一下为什么遍历结束后为什么count不为0时返回false,应为一旦count不为0,意味着字符串中有多余的左括号没有被完全匹配。
代码如下:
public class Test { public static void main(String[] args) { String str = "(((())))(()()"; char[] chs = str.toCharArray(); System.out.println(matching(chs)); } public static boolean matching(char[] chs) { int count = 0; for (char c : chs) { if (count < 0 || !(c == '(' || c == ')')) { return false; } else if (c == '(') { count++; } else { count--; } } if (count == 0) { return true; } else { return false; } }}
阅读全文
0 1
- java实现括号匹配
- Java实现括号匹配
- java实现括号匹配
- 括号匹配Java实现
- java栈实现括号匹配
- 括号是否匹配 java实现
- Java实现括号匹配校验
- java实现最长匹配括号的长度
- 使用栈实现括号匹配算法-java
- java版 利用栈实现括号匹配
- java利用栈实现括号()[]匹配问题
- ACM括号匹配问题(java实现)
- 括号匹配算法的java实现
- STL实现括号匹配
- STL实现括号匹配
- 栈实现括号匹配
- 栈实现括号匹配
- 栈实现括号匹配
- UVA 11549 Calculator Conundrum Floyd判圈算法 Brent判圈算法 相关性质及证明
- issue-15 了解闭包里如何使用外围作用域里的变量
- HorizontalScrollView 初始化第一次时使用smoothScrollTo无效的解决办法
- SOAPUI测试步骤(七)---DataSink TestStep
- shell脚本
- 括号匹配Java实现
- Java的回调
- 第三季第一节课——题目1
- Centos7.3安装和配置Mysql5.7
- c++ 双向链表
- FutureTask 源码分析
- 轻松看懂机器学习十大常用算法
- 小错误maven install 控制台 无输出
- nrf51822-添加DFU服务