92分求助,有第五个测试点re了,真找不出来错了呜呜
查看原帖
92分求助,有第五个测试点re了,真找不出来错了呜呜
445109
mochuen楼主2022/1/29 12:03

import java.io.BufferedInputStream;

import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Scanner;
import java.util.Set;










public class Main {
	
	static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
	static Scanner scanner = new Scanner(new BufferedInputStream(System.in));
	static boolean[] vis=new boolean[1000];
	public static void main(String[] args) {
		String s = scanner.next();
		if(s==null)return;
		for(int i=1;i<s.length();i++) {//从前往后扫描
			if(s.charAt(i)==')') {//如果找到右括号
				
				for(int j=i-1;j>=0;j--) {
					if(s.charAt(j)=='('&&vis[j]==false) {
						vis[j]=true;vis[i]=true;//如果找到左括号,将这两个括号标记
						break;//标记了就退出
					}
					else if(s.charAt(j)=='['&&vis[j]==false)break;//如果找到另一种括号,直接退出
				}
			}else if(s.charAt(i)==']') {//同上
			
				for(int j=i-1;j>=0;j--) {
					if(s.charAt(j)=='['&&vis[j]==false) {
						vis[j]=true;vis[i]=true;
						break;
					}
					else if(s.charAt(j)=='('&&vis[j]==false) {
						break;
					}
				}
			}
		}
		for(int i=0;i<s.length();i++) {
			if(!vis[i]) {//如果没有标记,补全再输出
				if(s.charAt(i)=='('||s.charAt(i)==')') {
					out.print("()");
				}else out.print("[]");
			}else out.print(s.charAt(i));//否则直接输出
		}
		
		
		out.flush();
		
	}
	
	
	
	
	
	
	
	
	
	
	

	

	
	
	
	
	
	
	


	

	
}
	
	
	
	
	
	



	


	
	

	
	
2022/1/29 12:03
加载中...