ACM 括号匹配问题,求大神指点迷津

赵一楽 2017-09-12 09:56:06
【我写的代码在自己电脑上测试没有问题,但是提交后总是提示runtime error】
描述
现在,有一行括号序列,请你检查这行括号是否配对。

输入
第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
输出
每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
样例输入

3
[(])
(])
([[]()])

样例输出

No
No
Yes

【我写的java代码】
import java.util.Scanner;

/**
* 括号匹配问题 需求:屏幕输入 3 [(]) []([)] ([][)]] 输出结果 YES YES NO
*
* @author Distance
*
*/
public class Practice2 {

static String [] result = new String [1000];

public static void main(String[] args){

Scanner scanner = new Scanner(System.in);
int row = scanner.nextInt();
// 定义一个数组,用来存储匹配结果

// for循环来判断执行几次循环


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


Scanner scanner1 = new Scanner(System.in);
/*
* 为什么这里的scanner不能和上边的用一个scanner
*/
String str = scanner1.nextLine();

// 执行匹配函数,且每次的执行结果都存储到数组result中
int length = str.length();
char[] arr = str.toCharArray();
int a = 0;
int b = 0;
int c = 0;
int d = 0;


while (length > 0) {
for (int j = 0; j < arr.length; j++) {
if ("[".equals("" + arr[j])) {
a++;
}else if ("]".equals("" + arr[j])) {
b++;
}else if ("(".equals("" + arr[j])) {
c++;
}else if(")".equals("" + arr[j])) {
d++;
}

length--;
}

}

if ((a - b == 0) && (c - d == 0)) {

result[i] ="Yes";
} else {
result[i] = "No";
}



}




//遍历结果集
for (int i = 0; i < result.length; i++) {
if(result[i]!=null){
System.out.println(result[i]);
}

}


}


}
...全文
126 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧