关闭

每日算法练习之括号配对

标签: 算法
158人阅读 评论(0) 收藏 举报
分类:
package myjava;

import java.util.ArrayList;
import java.util.Scanner;

/**
 * @author wang:
 * @version 创建时间:2016年8月30日 上午8:15:06
 * 类说明
 * 括号配对问题
描述
现在,有一行括号序列,请你检查这行括号是否配对。
输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,
每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。
数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入
3
[(])
(])
([[]()])
样例输出
No
No
Yes
 */
public class peidui {
	public static void main(String[] args) {
		@SuppressWarnings("resource")
		Scanner san = new Scanner(System.in);
		ArrayList<String> shuju = new ArrayList<String>();
		ArrayList<String> panduan = new ArrayList<String>();
		int count = san.nextInt();
		while(count<0||count>100){
			System.out.println("长度大于0小于100");
			count = san.nextInt();
		}
		System.out.println("请输入"+count+"组数据");
		for(int i =1;i<=count;i++){
			String temp =san.next();
			shuju.add(temp);
			char[] chars = temp.toCharArray();
			panduan.add(panduan(chars));
 		}
		
		for(int a= 0;a<shuju.size();a++){
			System.out.println(shuju.get(a));
		}
		for(int a= 0;a<panduan.size();a++){
			System.out.println(panduan.get(a));
		}
	}
	
	public static String panduan(char[] chars){
		for(int j =0;j<chars.length;j++){
			if(j == chars.length-1){
				return "no";
			}
			if(((int)chars[j]==40&&(int)chars[j+1]==41)||
					((int)chars[j]==91&&(int)chars[j+1]==93)){
//				System.out.println((int)chars[j]);
//				System.out.println((int)chars[j+1]);
				return "yes";
			}else{
			}

		}
		return "no";
	}

}


堆栈的写法看完再更新

0
0
查看评论

栈和队列应用之括号匹配

一.题目描述 假设一个表达式或一段程序中含有三种括号:圆括号“(”和“)”、方括号“[”和“]”、花括号“{”和“}”。试写一个程序判别给定的表达式或程序中所含括号是否正确配对出现。 输入说明: 多组输入数据,第1行为1个正整数n,表明有n组测试数据;其余n行为n组测试数据,每行为一个含有括号...
  • lhyer
  • lhyer
  • 2015-08-14 17:16
  • 1271

[NYOJ] 02括号配对问题(c语言链栈实现)

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=2 括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述现在,有一行括号序列,请你检查这行括号...
  • the_victory
  • the_victory
  • 2016-10-04 15:15
  • 1020

括号匹配检验(不用栈的方法)

FJNU.1738Description输入含圆括号的表达式形式串,判断其是否符合表达式格式,是则输出YES,否则输入NO。Input字符串OutputYES或NO(其前后不留空格,也不输出回车)Sample Input(1+23+(12)+234+((((67)))))Sample OutputY...
  • yahreso
  • yahreso
  • 2008-02-17 00:04
  • 943

括号配对问题--一道ACM在线测试题

今天在南阳理工学院的在线ACM测试上做了一道题,简直弱爆了。。。请看原题: 描述 现在,有一行括号序列,请你检查这行括号是否配对。 输入第一行输入一个数N(0输出每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No样例输入 3 [(]) (])...
  • linuxblack125125
  • linuxblack125125
  • 2012-07-28 01:04
  • 7941

栈用于解决括号匹配问题

在编写程序的过程中,我们经常需要对一串括号是否匹配进行判断。如何判断呢?我们可以借助栈来进行判断。基本思路是:遍历字符串,当发现有右括号而此时的栈顶元素又恰好是与之匹配的左括号时,则栈顶元素出栈;其余情况全部入栈,代码如下: #include<stdio.h> #include<s...
  • kelvinmao
  • kelvinmao
  • 2016-04-07 23:01
  • 1335

ACM—括号配对问题

描述 现在,有一行括号序列,请你检查这行括号是否配对。 输入 第一行输入一个数N(0import java.util.Scanner; import java.util.Stack; public class Demo01 { public static void main(Strin...
  • qq_17769897
  • qq_17769897
  • 2016-12-29 17:23
  • 247

C语言 括号 配对 不相交

题目如下: 判断一个字符序列中(与)、[与]、{与}是否配对且互不相交 分析: 如果只要求配对的话,直接统计这些字符的两两对应数目是否相等即可, 但关键点在于互不相交,互不相交是什么意思呢,离得最近的左右括号一定是相同类型的,去掉这两个括号,再按这个规则匹配,最后可以把括号全部去掉,...
  • xuqi7
  • xuqi7
  • 2015-11-27 23:49
  • 931

括号匹配问题(一)

括号配对问题 时间限制: 3000ms 内存限制: 128000KB 64位整型:      Java 类名: 题目描述 现在,有一行括号序列,请你检查这行括号是否配对。 输入 第一行输入一个数N(0...
  • yuan_jlj
  • yuan_jlj
  • 2016-03-12 19:30
  • 2635

c++ 括号匹配

主要是利用栈进行入栈出栈匹配,代码如下: #include #include using namespace std; #define STACK_SIZE 100 struct Stack { char strStack[STACK_SIZE]; int top; }; ...
  • fwb330198372
  • fwb330198372
  • 2016-04-07 14:32
  • 1907

堆栈应用——括号匹配问题

假设一个算术表达式中包含圆括号()、方括号[]和花括号{}三类括号,要求判断表达式中括号是否正确匹配配对。 分析:括号匹配符号后到的括号要最先被匹配,所以满足栈“后进先出”的特点。 括号匹配共有四种情况:(1)左右括号配对次序不正确,即存在类似“(]”这种情况;(2)右括号多于左括号;(3)左括...
  • sinat_32561655
  • sinat_32561655
  • 2017-03-30 15:44
  • 553
    个人资料
    • 访问:12693次
    • 积分:275
    • 等级:
    • 排名:千里之外
    • 原创:15篇
    • 转载:2篇
    • 译文:0篇
    • 评论:13条
    文章分类
    最新评论