算法:检查括号是否配对
2014-10-22 09:51
232 查看
package practice; import java.util.ArrayList; import java.util.List; import java.util.Scanner; import java.util.Stack; /** * 描述 现在,有一行括号序列,请你检查这行括号是否配对。<br> * 输入第一行输入一个数N(0<N<=100),表示有N组测试数据。<br> * 后面的N行输入多组输入数据,每组输入数据都是一个字符串S (S的长度小于10000,且S不是空串 ),测试数据组数少于5组。<br> * 数据保证S中只含有"[","]","(",")"四种字符输出每组输入数据的输出占一行,如果该字符串中所含的括号是配对的 * ,则输出Yes,如果不配对则输出No * * @author caiyu * @date 2014-10-22 */ public class Main { public static void main(String[] args) { char c, start; boolean f; String str; int i, j, t, len; List<String> rl = new ArrayList<String>(); Stack<Character> stack = new Stack<Character>(); Scanner s = new Scanner(System.in); t = s.nextInt(); long time = System.currentTimeMillis(); for (i = 0; i < t; i++) { str = s.next(); f = true; for (j = 0, len = str.length(); j < len; j++) { c = str.charAt(j); if (c == 91 || c == 40) stack.add(str.charAt(j)); else { if (stack.size() == 0) f = false; else { start = stack.pop(); f = start == 40 ? c == 41 : (start == 91 ? c == 93 : false); } } if (!f) break; } if (stack.size() > 0) f = false; stack.clear(); if (f) rl.add("YES"); else rl.add("NO"); } for (String r : rl) { System.out.println(r); } System.out.println(System.currentTimeMillis() - time); } }
相关文章推荐
- 算法13:检查一个表达式中的括号是否合法,括号包括 {, [, (, ), ], }
- 括号配对:假设一个数学算式中包括圆括号"()",方括号”[]"和花括号“{}”三种类型,编写一算法判断表达式的括号是否配对。
- 假设表达式中包含三种括号 圆括号方括号大括号 设计一个算法用顺序栈判断表达式中的括号是否正确配对
- 假设一个数学算法中包括圆括号(),方括号[],花括号{}三种类型,编写表达式的括号是否配对
- 【数据结构基础】判别给定的表达式所含括号是否正确配对出现的算法。
- 假设表达式中允许包括3中括号:(,[,{,设计一个算法采用顺序栈判断表达式中的括号是否正确配对
- 一个判别表达式中开、闭括号是否配对出现的算法
- 设计一个算法判别用字符串表示的表达式中开、闭括号是否配对出现
- 判别给定表达式中所含括号是否正确配对出现的算法
- 检查括号是否全部配对
- 【算法】 判断括号是否匹配
- 微软等数据结构+算法面试100题(6)--写一个函数,检查字符是否是整数,如果是,返回其整数值
- 堆栈数据结构应用之括号匹配检查(算法3.2.2)
- 利用栈的基本操作,检查括号是否匹配
- 括号配对算法
- 实现一种算法,打印n对括号的全部有效组合(即左右括号正确配对)
- 检测括号是否配对
- 正则表达式简单验证内容中的括号是否配对
- 《算法导论》2.3-7 检查集合中是否存在两数字和为指定的X--算法和证明
- NYOJ 2 括号是否配对