括号匹配 - 给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。

7-12 括号匹配 (15 分)
给定一串字符,不超过100个字符,可能包括括号、数字、字母、标点符号、空格,编程检查这一串字符中的( ) ,[ ],{ }是否匹配。

输入格式:
输入在一行中给出一行字符串,不超过100个字符,可能包括括号、数字、字母、标点符号、空格。

输出格式:
如果括号配对,输出yes,否则输出no。

输入样例1:
sin(10+20)
输出样例1:
yes
输入样例2:
{[}]
输出样例2:
no

这个题提交是部分正确,我用Java的输出和输出样例一样。
用HashMap储存符号的对应关系,用栈储存符号,如果遇到对应的符号就出栈并把标志flag置为1。
代码如下:

**import java.util.Stack;
import java.util.Scanner;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Stack s = new Stack();
HashMap<Character, Character> h = new HashMap<Character, Character>();
h.put(’(’, ‘)’);
h.put(’[’, ‘]’);
h.put(’{’, ‘}’);
String str = in.nextLine();
in.close();
int i = 0;
int flag = 0;
for (; i < str.length(); i++) {
if (str.charAt(i) == ‘(’ || str.charAt(i) == ‘[’
|| str.charAt(i) == ‘{’) {
s.push(str.charAt(i));
} else if ((str.charAt(i) == ‘)’ | str.charAt(i) == ‘]’ | str
.charAt(i) == ‘}’)) {
if (!s.empty()&&h.get(s.peek()) == str.charAt(i)) {
s.pop();
flag = 1;
}
else{
flag=0;
break;
}
}
}
if (flag == 1) {
System.out.println(“yes”);
}
if (flag == 0) {
System.out.println(“no”);
}

}

}**

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值