题目链接
题意:给出一个字符串,判断最多移动一个字符,是否可以变成括号对
题解:由于()成对出现,所以字符串的长度必须为偶数
然后用栈进行判断。
遇见(存入,遇见)栈去掉栈顶元素
然后若栈的长度小于1,就是YES
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
String str=sc.next();
if(n%2!=0) System.out.println("NO");
else {
char c[]=str.toCharArray();
Stack<Character> s=new Stack<Character>();
int a=0,b=0;
for(int i=0;i<c.length;i++) {
if(c[i]=='(') {
a++;
s.push(c[i]);
}else {
if(s.size()!=0) {
s.pop();
}
b++;
}
}
if(a!=b) System.out.println("NO");
else {
if(s.size()<=1)System.out.println("YES");
else System.out.println("NO");
}
}
}
}