括号匹配问题之Java,哪错了?

shewolfbfh 2014-09-22 10:56:34
括号匹配问题:

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

解题思路:
两个整型,分别标识 ( 和 [ 的数量,碰到左括号+1,碰到右括号-1,最后判断是否同时为0。

代码:


public class Main {

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
while (num != 0) {
String lineStr = scanner.next();
if (isMatched(lineStr)) {
System.out.println("Yes");
} else {
System.out.println("No");
}
num--;
}
}

private static boolean isMatched(String input) {
if (input.length() % 2 == 1) {
return false;
}
// 大括号
int braceNum = 0;
// 中括号
int bracketNum = 0;
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if (c == '[') {
bracketNum++;
} else if (c == ']') {
bracketNum--;
} else if (c == '(') {
braceNum++;
} else if (c == ')') {
braceNum--;
}
}
return (braceNum== 0) && (bracketNum == 0) ;
}
}


但是提交了,显示WrongAnswer,哪位大牛帮忙扫一眼,代码哪个地方写的有纰漏?
...全文
208 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
姜小白- 2014-09-24
  • 打赏
  • 举报
回复
if (input.length() % 2 == 1) { return false; } 这几行干掉,没有说字符必须是偶数个 只需匹配 () 和 [ ] 就可以了
giserhe 2014-09-23
  • 打赏
  • 举报
回复
你是要判断匹配吗?如果你是判断匹配的话 建议你使用队列的数据结构进行判断
aaron_gzt 2014-09-23
  • 打赏
  • 举报
回复
如果输入像)(这样的,也是匹配么?
shewolfbfh 2014-09-23
  • 打赏
  • 举报
回复
引用 2 楼 u011776918 的回复:
你是要判断匹配吗?如果你是判断匹配的话 建议你使用队列的数据结构进行判断
这个问题,标准答案是用栈,但是不知道我想知道自己的代码哪里出问题了?
shewolfbfh 2014-09-23
  • 打赏
  • 举报
回复
引用 1 楼 aaron_gzt 的回复:
如果输入像)(这样的,也是匹配么?
这个是能匹配的。

50,545

社区成员

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

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