文章
27
粉丝
492
获赞
10
访问
268.9k
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; //将压入栈中的左括号在原字符串中的...
登录后发布评论
暂无评论,来抢沙发