java判断字符串里中括号是否为空
时间: 2024-10-16 12:08:22 浏览: 17
在Java中,判断一个字符串里的中括号(即[])是否为空,通常会检查字符串中的左大括号'['的数量是否等于右大括号']'的数量。可以使用栈(Stack)数据结构来辅助完成这个任务,因为当你遇到左大括号时入栈,遇到右大括号时出栈,并检查栈是否为空来确定配对是否完整。
以下是一个简单的示例函数:
```java
public boolean isBracketsEmpty(String s) {
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()) {
if (c == '[' || c == '{' || c == '(') { // 左括号入栈
stack.push(c);
} else if (c == ']' || c == '}' || c == ')') { // 右括号出栈
if (stack.isEmpty() || stack.pop() != c) { // 如果栈空或不匹配则返回false
return false;
}
}
}
// 判断括号是否完全配对
return stack.isEmpty();
}
```
如果`isBracketsEmpty(s)`返回`true`,那么字符串`s`中的中括号就是空的;反之则是非空的。
相关问题
给出一个字符串,字符串中只有(、)、[、]、{、}六种字符。要求判断字符串中的括号是否合法匹配。用java
可以使用栈来解决该问题。遍历字符串,如果遇到左括号,就将其入栈;如果遇到右括号,就将栈顶元素出栈,判断是否匹配。如果匹配,继续遍历字符串;否则,返回false。
如果遍历完字符串后,栈为空,说明括号匹配;否则,返回false。
以下是示例代码:
```
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()) {
if (c == '(' || c == '[' || c == '{') {
stack.push(c);
} else if (c == ')' && !stack.isEmpty() && stack.peek() == '(') {
stack.pop();
} else if (c == ']' && !stack.isEmpty() && stack.peek() == '[') {
stack.pop();
} else if (c == '}' && !stack.isEmpty() && stack.peek() == '{') {
stack.pop();
} else {
return false;
}
}
return stack.isEmpty();
}
```
用java给出一个字符串,字符串中只有(、)、[、]、{、}六种字符。要求判断字符串中的括号是否合法匹配。字符串长度不超过10000个字符。判断每个字符串是否合法,合法则输出“YES”,否则输出”NO”。
思路:使用栈来判断括号是否匹配,遍历字符串,遇到左括号则入栈,遇到右括号则判断栈顶元素是否与其匹配,若匹配则弹出栈顶元素,否则返回“NO”。最后判断栈是否为空,若为空则返回“YES”,否则返回“NO”。
代码如下:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNext()) {
String str = input.nextLine();
if (isValid(str)) {
System.out.println("YES");
} else {
System.out.println("NO");
}
}
input.close();
}
public static boolean isValid(String str) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
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();
}
}
阅读全文