[原]NYOJ-括号匹配-2(java)
//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();
}
}
}
*/
[原]NYOJ-括号匹配-2(java)的更多相关文章
- [原]NYOJ 括号匹配系列2,5
本文出自:http://blog.csdn.net/svitter 括号匹配一:http://acm.nyist.net/JudgeOnline/problem.php?pid=2 括号匹配二:htt ...
- NYOJ - 括号匹配(二)(经典dp)
括号匹配(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:6 描写叙述 给你一个字符串,里面仅仅包括"(",")","[&quo ...
- 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 ...
- 对如下字符串(234453)[234]{2324}分析它的括号使用是否正确,括号匹配(Java实现)
我的一种思路是递归: private static String s = "(2344[)]53[234]{2324}"; private static boolean f(int ...
- java:数据结构(二)栈的应用(括号匹配)
一.什么是括号匹配: 括号匹配就是利用计算机辨别表达式里面的括号是否书写成功 例如: {()((a)) }这就是一个正确 (()() 这就是一个错误的 二.括号匹配的算法: 众所周知,括号分为花括 ...
- 打印n对括号的全部有效组合(左右括号正确匹配)Java实现
一.问题导出 今天在做算法题目的时候遇到了一道左右括号匹配的问题,问题如下: 二.问题思考 (1)这种要列出全部可能性的题目很容易想到由小到大去发现规律,用递归或者暴力搜索. 首先1的情况,一个括号只 ...
- P1739_表达式括号匹配(JAVA语言)
思路:刚开始想用stack,遇到'('就push,遇到')'就pop,后来发现其实我们只需要用到栈里'('的个数,所以我们用一个变量统计'('的个数就好啦~ 题目描述 假设一个表达式有英文字母(小写) ...
- NYOJ 题目15 括号匹配(二)(区间DP)
点我看题目 题意 : 中文题不详述. 思路 : 本来以为只是个小模拟,没想到是个区间DP,还是对DP不了解. DP[i][j]代表着从字符串 i 位置到 j 位置需要的最小括号匹配. 所以初始化的DP ...
- [NYOJ 15] 括号匹配(二)
括号匹配(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:6 描述 给你一个字符串,里面只包含"(",")","[&qu ...
随机推荐
- vue面试题,知识点汇总(有答案)
一. Vue核心小知识点 1.vue中 key 值的作用 key 的特殊属性主要用在 Vue的虚拟DOM算法,在新旧nodes对比时辨识VNodes.如果不使用key,Vue会使用一种最大限度减少动态 ...
- Markdown常用语法学习
Markdown常用语法学习,这些就够用了. 演示地址: https://github.com/YalongYan/Markdown-- 特别提示: 标题'##'后面必须加一个空格,否则编译不对.# ...
- 编辑器模式下如何实例化Prefab
当我们在EditMode下需要用脚本批量添加prefab时,可以用 PrefabUtility.InstantiatePrefab(prefab) as GameObject; 注意:如果用GameO ...
- 使用Swoole加速Laravel(正式环境中)
1 Laravel的速度瓶颈在哪? 1.1 已有的一些优化方法 1.1.1 laravel官方提供了一些优化laravel的优化方法 php artisan optimize php artisan ...
- python 上传文件下载图片
python 2.7 poster-0.8.1 requests-2.7.0 #coding:utf-8import urllibimport urllib2import sysimport time ...
- python多进程-----multiprocessing包
multiprocessing并非是python的一个模块,而是python中多进程管理的一个包,在学习的时候可以与threading这个模块作类比,正如我们在上一篇转载的文章中所提,python的多 ...
- intellij idea 自动生成setter getter
windows下: alt + insert,然后选择要生成的成员. mac下: command + N
- Django开发模式会加载两次settings文件导致RotatingFileHandlerError
当使用RotatingFileHandler作为django的日志处理器的时候,会报: Traceback (most recent call last): File "C:\Python2 ...
- eclispse + tomcat 启动是不加载项目的解决办法
有一个java spring的项目一直好好的,突然一天不能启动了.eclipse的console没有报任何错误,相关的server配置也没有问题,经过一翻折腾顺便还把eclipse从indigo升级到 ...
- windows10 Python2和Python3共存
通过配置环境变量,达到使用python命令启动python2,使用python3命令启动python3,pip启动pip2, pip3启动pip3的目的,互不影响. 1.安装python2.7 安装 ...