大学生程序代写

//http://acm.nyist.net/JudgeOnline/problem.php?pid=2

括号配对问题

时间限制:3000 ms  |  内存限制:65535 KB 

难度:3

描述 

现在,有一行括号序列,请你检查这行括号是否配对。 

输入 

第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符 

输出 

每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No 

样例输入 

3

[(])

(])

([[]()])样例输出 

No

No

Yes来源 

网络 

上传者 

naonao 









import java.util.*;

public class 括号匹配2_2013_5_23 {//

public static void main(String[] args) {

//Bracket B=new Bracket();

Scanner input = new Scanner(System.in);

int n = input.nextInt();

while (n-- > 0) {

String a = input.next();


if (Bracket.isMatch(a))

System.out.println("Yes");

else

System.out.println("No");

}

}

public static class Bracket{

static boolean isMatch(String b){

boolean m = true;

Stack<Character> st = new Stack<Character>();

for (int i = 0; i < b.length(); i++) {

char p = b.charAt(i);

if (p == '[' || p == '(')

st.push(p);

if (p == ']' || p == ')') {

if (st.isEmpty()) {

m = false;

break;



else {

if ((p == ']' && st.peek() == '[')

|| (p == ')' && st.peek() == '('))


st.pop();

else {

m = false;

break;

}

}

}

}

if(!st.isEmpty())m=false;

return m;

}



}





}

















  /*//BufferedReader读取字符速度更快

 import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.util.Scanner;

import java.util.Stack;





public class 括号匹配2013_5_23  {





public static void main(String[] args) {//==========效率更高===========,





BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String str = null;

Stack<Character> stack = new Stack<Character>();





try{

int cases = Integer.valueOf(br.readLine());

while(cases-->0){





str = br.readLine();

int strLength = str.length();

boolean isMatch = true;

stack.clear();

stack.push('#');

for(int i = 0; i < strLength; ++i){

char ch = str.charAt(i);

switch(ch){

case '(':

stack.push(ch);

break;

case '[':

stack.push(ch);

break;

case ')':

if(stack.pop() != '('){

isMatch = false;

}

break;

case ']':

if(stack.pop() != '['){

isMatch = false;

}

break;

default:

isMatch = false;

break;

}

if(!isMatch){

break;

}

}

if(isMatch&&stack.pop()=='#'){

System.out.println("Yes");

}else{

System.out.println("No");

}

}

}catch(Exception e){

e.printStackTrace();

}

}

}

*/

作者:chao1983210400 发表于2013-7-10 13:49:50 原文链接
阅读:17 评论:0 查看评论

[原]NYOJ-括号匹配-2(java)的更多相关文章

  1. [原]NYOJ 括号匹配系列2,5

    本文出自:http://blog.csdn.net/svitter 括号匹配一:http://acm.nyist.net/JudgeOnline/problem.php?pid=2 括号匹配二:htt ...

  2. NYOJ - 括号匹配(二)(经典dp)

    括号匹配(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:6 描写叙述 给你一个字符串,里面仅仅包括"(",")","[&quo ...

  3. nyoj 括号匹配

    这个方程有两种形式,本文采用 if(s[i]=s[j]) dp[i][j]=d[i-1][j-1]   dp[i][j]=min(dp[i][k]+dp[k+1][j],dp[i][j]) (i=&l ...

  4. 对如下字符串(234453)[234]{2324}分析它的括号使用是否正确,括号匹配(Java实现)

    我的一种思路是递归: private static String s = "(2344[)]53[234]{2324}"; private static boolean f(int ...

  5. java:数据结构(二)栈的应用(括号匹配)

    一.什么是括号匹配: 括号匹配就是利用计算机辨别表达式里面的括号是否书写成功 例如: {()((a)) }这就是一个正确 (()()   这就是一个错误的 二.括号匹配的算法: 众所周知,括号分为花括 ...

  6. 打印n对括号的全部有效组合(左右括号正确匹配)Java实现

    一.问题导出 今天在做算法题目的时候遇到了一道左右括号匹配的问题,问题如下: 二.问题思考 (1)这种要列出全部可能性的题目很容易想到由小到大去发现规律,用递归或者暴力搜索. 首先1的情况,一个括号只 ...

  7. P1739_表达式括号匹配(JAVA语言)

    思路:刚开始想用stack,遇到'('就push,遇到')'就pop,后来发现其实我们只需要用到栈里'('的个数,所以我们用一个变量统计'('的个数就好啦~ 题目描述 假设一个表达式有英文字母(小写) ...

  8. NYOJ 题目15 括号匹配(二)(区间DP)

    点我看题目 题意 : 中文题不详述. 思路 : 本来以为只是个小模拟,没想到是个区间DP,还是对DP不了解. DP[i][j]代表着从字符串 i 位置到 j 位置需要的最小括号匹配. 所以初始化的DP ...

  9. [NYOJ 15] 括号匹配(二)

    括号匹配(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:6   描述 给你一个字符串,里面只包含"(",")","[&qu ...

随机推荐

  1. vue构建完整项目-以及实现

    简介 由于开发vue项目的时候,需要重新搭建项目的架子,比较麻烦,其实之前做过的项目好多都可以直接拿过来用,比如接下来的这个项目,就可以满足平常的vue单页面开发. 该项目包括了: 全局配置axios ...

  2. ASP.NET动态网站制作(18)-- jq作业讲解及知识补充

    前言:这节课主要讲解js及jq作业,并在作业讲解完后补充关于jQuery的一些知识点. 内容: 1.作业讲解:计算器那一块考虑的各种情况还不算完善,只实现了基本的功能,还需多多练习使用jQuery. ...

  3. wordcloud使用

    学了下怎么用wordcloud. 以imet的数据集为例 https://www.kaggle.com/c/imet-2019-fgvc6 读取“train.csv”,”label.csv”文件,得到 ...

  4. hihoCoder #1312 : 搜索三·启发式搜索(A*, 康托展开)

    原题网址:http://hihocoder.com/problemset/problem/1312 时间限制:10000ms 单点时限:1000ms 内存限制:256MB   描述 在小Ho的手机上有 ...

  5. 关于ES6的let,const与var之间的三生三世

    首先需要明确的是let.const.var都是用来定义变量的 在ES6之前,我们一般都用var来定义变量,例如 : function test(){ var i=1; console.log(i); ...

  6. [转】IIS:Do not nest virtual directories

    原文:https://msdn.microsoft.com/en-us/library/ms178685.aspx#Anchor_6 Configuration settings for virtua ...

  7. sublime运行Python

    1.首先安装Python 我这里安装的是Python的3.7版本. 这里有两种安装方式 第一种: 默认路径安装,勾选添加到path复选框(这种情况,sublime可以直接运行Python了) 第二种: ...

  8. eclilpse svn : Item is out of date 解决办法

    尝试以下方面, 1. 2.如果上面的还不行,就说明你修改了原有项目结构,可能是增加了新包,或者重命名的包或文件,那么你得先update,然后再提交 这样就OK了,我就是用了2才成功的哦.

  9. Android动画效果animation

    1.Tween 根据指定动画开始和结束时的对象属性(位置.Alpha值(透明度).大小.角度等)以及动画播放的时间长度生成动画: 2.Frame 指定每一帧所播放的图片和时间长度.   建立动画的方法 ...

  10. matlab + c/c++ opencv 混合编程

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 辛苦原创所得,转载请注明出处 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ...