括号正确嵌套问题的实现(Java)
来源:互联网 发布:淘宝天猫运营工作内容 编辑:程序博客网 时间:2024/06/04 19:10
最近比较忙,前几天实现的一些小算法没时间写到博客上面,今天有时间了,把它整理出来,跟大家分享。
本代码采用ArrayList存储括号字符,即遍历字符串字符,每当遇到括号元素时,就将其加入该集合。
废话少说,进入正题。
题目描述:给定一字符串,其内包含“()”,“{}”和“[]”三种括号,请设计算法检验括号是否正确嵌套(如果字符串内不包含括号元素,按未正确嵌套处理)
首先给出代码,接下来我会对代码进行分析。
import java.util.*;public class Main{public static void main(String[] args){Scanner in=new Scanner(System.in); String str1=""; while(in.hasNext()){ str1=in.nextLine(); System.out.println(parse(str1)); }}public static boolean parse(String s){ArrayList<Character> result=new ArrayList<Character>();if (s.contains("(")||s.contains("{")||s.contains("[")||s.contains("]")||s.contains("}")||s.contains(")")) {for(int i=0;i<s.length();i++){if (s.charAt(i)=='('||s.charAt(i)=='{'||s.charAt(i)=='['||s.charAt(i)==']'||s.charAt(i)=='}'||s.charAt(i)==')') {result.add(s.charAt(i));}}if (result.size()%2!=0) {return false;}else{int pairNum=result.size()/2;int count=result.size()/2;while(pairNum>0&&count>0){for(int i=0;i<result.size()-1;i++){if (result.get(i)=='('&&result.get(i+1)==')') {result.remove(i);result.remove(i);pairNum--;break;}if (result.get(i)=='['&&result.get(i+1)==']') {result.remove(i);result.remove(i);pairNum--;break;}if (result.get(i)=='{'&&result.get(i+1)=='}') {result.remove(i);result.remove(i);pairNum--;break;}}count--;}if (result.size()==0) {return true;}else {return false;}}}return false;}}
本代码采用ArrayList存储括号字符,即遍历字符串字符,每当遇到括号元素时,就将其加入该集合。
接下来就是对ArrayList进行处理了
1.如果字符串中不包含括号元素,直接返回false;如果包含括号元素,就将该括号元素加入ArrayList集合;
2.如果该ArrayList的大小,即size()不为偶数,那么说明括号一定没有正确嵌套。因为我们知道,括号都是成对出现的;
3.如果该ArrayList的大小,即size()为偶数,那么进行如下处理:
如果集合内的某一元素和其相邻元素能够组成括号对,那么就从该集合中,将该成对括号清除。接下来,再继续如此操作,进行count(size()/2)次后,如果该集合内仍然有元素,即size()大于0,那么说明括号没有正确嵌套。等于0,说明括号正确嵌套。
以上是个人愚见,如有不妥支持,还望各位看官批评指正。
阅读全文
1 0
- 括号正确嵌套问题的实现(Java)
- 括号匹配算法的一种正确实现(java)
- 括号平衡和正确嵌套
- ACM括号匹配问题(java实现)
- 括号配对问题JAVA实现
- java利用栈实现括号()[]匹配问题
- 实现一种算法,打印n对括号的全部有效组合(即左右括号正确配对)
- 实现简单的花括号配对问题
- 打印n对括号的全部有效组合(即左右括号正确配对)
- java--一道简单的括号匹配问题
- java 实现带括号的加减乘除四则运算
- java实现最长匹配括号的长度
- Java实现-有效的括号序列
- 括号匹配算法的java实现
- html正确的嵌套规则
- 判断一个含多种括号的字符串是否匹配正确 (如(([]))正确,[[(()错误)
- JAVA蓝桥杯(6)括号问题
- ACM 括号配对问题 (Java)
- 当我们谈论前端架构时,我们到底在谈论什么?
- 5-22 龟兔赛跑 (20分)
- 【线段树】BZOJ1012 [JSOI2008]最大数maxnumber
- NFS的那些事儿
- 数据类型转化
- 括号正确嵌套问题的实现(Java)
- chmod函数中的mode_t参数
- CCF 历年真题之画图(_1409_2_Drawing.java)参考答案
- jenkins 与CI集成
- SpringMVC(一)—环境搭建和实现静态资源的访问
- 程序菜鸡的目标与梦想
- Java集合类详解
- 《剑指offer》左旋转字符串
- 5-22 龟兔赛跑 (20分)(睡觉计时器,抄的)