首页 > 代码库 > 算法:检查括号是否配对
算法:检查括号是否配对
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); }}
算法:检查括号是否配对
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。