编号:20231012
题目解题参考答案:
方案1:
import java.util.Scanner;
// 2*(x+y)/(1-x)@
// (25+x)*(a*(a+b+b)@
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String expression = sc.nextLine();
//System.out.println(expression);
int count = 0;
for(int i = 0;i<expression.length();i++) {
if(expression.charAt(i) =='(') count++;
if(expression.charAt(i) ==')') count--;
if(count == -1) break;
if(expression.charAt(i) =='@') break;
}
System.out.println(count == 0?"YES":"NO");
}
}
方案2::
import java.util.Scanner;
import java.util.Stack;
public class Main{
public static String check(String target, String left, String right) {
Stack<String> stack = new Stack();
int i = 0;
while(true) {
label41:
do {
while(i < target.length()) {
char ch;
while(i < target.length() && (ch = target.charAt(i)) != left.charAt(0) && ch != right.charAt(0)) {
++i;
}
if (target.indexOf(left, i) != i) {
continue label41;
}
stack.push(left);
i += left.length();
}
return stack.isEmpty() ? "YES" : "NO";
} while(!target.startsWith(right, i));
if (stack.isEmpty() || !((String)stack.pop()).equals(left)) {
return "NO";
}
i += right.length();
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String target = sc.nextLine();
String left = "(";
String right = ")";
System.out.println(check(target, left, right));
}
}
海报信息: