用java写一段代码展示以下逻辑:输入的表达式成对出现,单个则不行,例如 {({[]})} 可以,{]}不行
时间: 2023-11-01 14:43:15 浏览: 70
好的,以下是用 Java 编写的代码来验证输入的表达式是否成对出现:
```java
import java.util.Stack;
public class ExpressionChecker {
public static boolean isExpressionValid(String expression) {
Stack<Character> stack = new Stack<>();
for (char c : expression.toCharArray()) {
if (c == '(' || c == '{' || c == '[') {
stack.push(c);
} else if (c == ')' || c == '}' || c == ']') {
if (stack.isEmpty()) {
return false;
}
char top = stack.pop();
if ((c == ')' && top != '(') ||
(c == '}' && top != '{') ||
(c == ']' && top != '[')) {
return false;
}
}
}
return stack.isEmpty();
}
public static void main(String[] args) {
String expression1 = "{({[]})}";
String expression2 = "{]}";
System.out.println(expression1 + " is " + (isExpressionValid(expression1) ? "valid" : "invalid"));
System.out.println(expression2 + " is " + (isExpressionValid(expression2) ? "valid" : "invalid"));
}
}
```
运行以上代码,输出结果为:
```
{({[]})} is valid
{]} is invalid
```
代码中使用了栈数据结构来判断左右括号是否匹配。遍历表达式中的每个字符,如果是左括号则入栈,如果是右括号则将栈顶的字符与当前字符进行匹配。如果匹配成功,则继续遍历;如果匹配失败或栈为空,则表达式为无效。最后,如果栈为空,则表示所有括号都匹配成功,表达式为有效。
阅读全文