java完成下面需求 输入一个只包含"(",")","{", "}", "[", "]"的字符串,判断字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合,左括号必须以正确的顺序闭合。空字符串可被认为是有效字符串。
时间: 2024-06-02 09:04:27 浏览: 54
java 判断字符串是否包含子串的方法
可以使用Java中的栈(Stack)数据结构来判断字符串是否有效。具体实现如下:
1. 创建一个栈对象,用来存储左括号。
2. 遍历输入的字符串,如果当前字符是左括号,则将其入栈。
3. 如果当前字符是右括号,则取出栈顶元素,判断是否与当前右括号匹配。如果不匹配,返回false,否则继续遍历。
4. 如果遍历完成后栈为空,返回true,否则返回false。
代码如下:
```
import java.util.Stack;
public class Solution {
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();
}
}
```
阅读全文