文章

27

粉丝

492

获赞

10

访问

255.2k

头像
试了多个用例都正确,提交不通过,求教大佬(北大1296题)
我要提问
发布于2020年4月18日 20:27
阅读数 9.0k

import java.util.Scanner;
import java.util.Stack;


public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		while (sc.hasNext()) {
			String str = sc.nextLine();
			char[] ch = str.toCharArray();
			char[] ch1 = new char[str.length()]; //用来存放新的字符串
			boolean flag[] = new boolean[str.length()]; //用来标记原字符串中左括号的状态(左括号会压入栈,有弹出和不弹出的状态)
			Stack<Character> stack = new Stack<Character>();
			int k[] = new int[str.length()]; //用来记录左括号的下标
			int t = -1;
			for (int i = 0; i < str.length(); i++) {
				if (ch[i] == ')') {
					if (stack.isEmpty()) { //栈为空,不存在左括号与当前的右括号进行匹配
						ch1[i] = '?';    //此处的右括号要置为 '?'
					} else if (!stack.isEmpty()) {
						stack.pop(); //从栈中弹出一个'(',
						flag[k[t]] = true; //将原字符串中该'('的状态设为真,表示可以配对
						t--; //移向栈中的下一个位置
					}
				} else if (ch[i] == '(') {
					stack.push(ch[i]);//将左括号压入栈
					t++;
					k[t] = i; //将压入栈中的左括号在原字符串中的...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发