"["
false
"[]"
true
要求:空间复杂度
,时间复杂度
。
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
LinkedList<Character> stack = new LinkedList<>();
for (char c : s.toCharArray()) {
Character peek = stack.peek();
if (peek == null) {
stack.push(c);
continue;
}
if (match(peek, c)) {
stack.pop();
} else {
stack.push(c);
}
}
return stack.isEmpty();
}
private static boolean match(Character a, char b) {
char aValue = a.charValue();
if ((aValue == '{' && b == '}') || aValue == '}' && b == '{') {
return true;
}
if ((aValue == '(' && b == ')') || aValue == ')' && b == '(') {
return true;
}
if ((aValue == '[' && b == ']') || aValue == ']' && b == '[') {
return true;
}
return false;
}
} import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
// write code here
Deque<Character> stack = new ArrayDeque<>();
HashMap<Character, Character> map = new HashMap<>();
map.put('{', '}');
map.put('(', ')');
map.put('[', ']');
if(s.length() % 2 != 0) return false;
for(int i=0;i<s.length();i++){
char c = s.charAt(i);
if(c == '[' || c == '{' || c == '('){
stack.addLast(c);
} else {
if(stack.isEmpty()) return false;
char temp = stack.pollLast();
if(map.get(temp) != c) return false;
}
}
if(stack.isEmpty()){
return true;
}
return false;
}
} java
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
// write code here
int length = s.length();
if(length%2==1){
return false;
}
MyStack stack = new MyStack(length);
for (int i = 0; i < length; i++) {
char element = s.charAt(i);
if (element == '[' || element == '(' || element == '{') {
stack.push(element);
} else {
if (stack.top == -1) {
return false;
} else {
char topElement = stack.pull();
if ((topElement == '[' && element == ']') || (topElement == '(' &&
element == ')') || (topElement == '{' && element == '}')) {
continue;
}else {
return false;
}
}
}
}
return stack.top==-1;
}
class MyStack {
int top ;
private char[] stack;
public MyStack(int length) {
stack = new char[length];
top = -1;
}
public void push(char element) {
stack[++top] = element;
}
public char pull() {
if (top != -1) {
return stack[top--] ;
}
return 'x';
}
public char peek() {
if (top != -1) {
return stack[top];
}
return 'x';
}
}
}
import java.util.*;
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 == ')' || c == ']' || c == '}') {
// 如果是闭括号,检查栈是否为空或栈顶元素是否匹配
if (stack.isEmpty() || !isMatchingPair(stack.peek(), c)) {
return false;
}
// 如果匹配,弹出栈顶元素
stack.pop();
}
}
// 如果栈为空,则所有括号都正确匹配
return stack.isEmpty();
}
// 检查两个字符是否是匹配的括号对
private static boolean isMatchingPair(char open, char close) {
return (open == '(' && close == ')') ||
(open == '[' && close == ']') ||
(open == '{' && close == '}');
}
} public class Solution {
private Character pair(Character c) {
switch(c) {
case ')': return '(';
case ']': return '[';
case '}': return '{';
default: return null;
}
}
public boolean isValid (String s) {
Stack<Character> stack = new Stack<>();
Character c;
for (int i=0; i<s.length(); i++) {
c = s.charAt(i);
if (c == '(' || c == '[' || c == '{') {
stack.push(c);
} else {
if (!stack.empty() && pair(c) == stack.peek()) {
stack.pop();
} else {
return false;
}
}
}
if (!stack.empty()) {
return false;
}
return true;
}
} public class Solution {
public boolean isValid (String s) {
if (s.length() % 2 != 0) return false;
char[] arr = s.toCharArray();
Deque<Character> stack = new ArrayDeque<>();
for (int i = 0; i < arr.length; i++) {
if (arr[i] == '(' || arr[i] == '[' || arr[i] == '{') {
stack.push(arr[i]);
} else if (!stack.isEmpty()) {
if (arr[i] == ')') {
if (stack.peek() == '(') stack.pop();
else return false;
} else if (arr[i] == ']') {
if (stack.peek() == '[') stack.pop();
else return false;
} else if (arr[i] == '}') {
if (stack.peek() == '{') stack.pop();
else return false;
} else return false;
}
}
return stack.isEmpty();
}
}
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
// write code here
// 1.创建一个栈,用来匹配左右括号
Stack<Character> stack = new Stack<>();
// 2.遍历字符串
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == '(' || c == '{' || c == '[') {
// 如果是左括号,直接入栈
stack.push(c);
} else if (c == ')') {
// 如果是')',则观察栈顶元素,若是'('则出栈
if (!stack.isEmpty() && stack.peek() == '(') {
stack.pop();
} else {
return false;
}
} else if (c == '}') {
// 如果是'}',则观察栈顶元素,若是'{'则出栈
if (!stack.isEmpty() && stack.peek() == '{') {
stack.pop();
} else {
return false;
}
} else if (c == ']') {
// 如果是']',则观察栈顶元素,若是'['则出栈
if (!stack.isEmpty() && stack.peek() == '[') {
stack.pop();
} else {
return false;
}
}
}
// 3.若栈空,则有效
return stack.isEmpty();
}
} import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
// write code here
String[] split = s.split(",");
int length = split.length;
if (length == 1 ) {
return false;
} else {
if (length % 2 != 0) {
return false;
} else {
boolean flag = true;
int i = 0;
while (flag) {
if (split[i] == "(") {
if (split[i + 1] == ")") {
flag = true;
} else flag = false;
} else if (split[i] == "[") {
if (split[i + 1] == "]") {
flag = true;
} else flag = false;
} else if (split[i] == "{") {
if (split[i + 1] == "}") {
flag = true;
} else flag = false;
} else flag = false;
}
return flag;
}
}
}
} import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
Deque<Character> deque = new ArrayDeque<Character>();
// s = s.substring(1, s.length() - 1);
System.out.println(s);
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == '(' || c == '[' || c == '{') {
deque.push(c);
} else {
if (deque.size() == 0) {
return false;
}
char c1 = deque.pop();
String str = c1 + "" + c;
if (!(str.equals("()") || str.equals("[]") || str.equals("{}"))) {
return false;
}
}
}
return deque.size() == 0 ? true : false;
}
} import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
// write code here
Map<Character, Character> map = new HashMap<>();
map.put(')', '(');
map.put(']', '[');
map.put('}', '{');
Stack<Character> signs = new Stack<>();
for (int i = 0; i < s.length(); i++) {
if (signs.empty() || map.values().contains(s.charAt(i))) { // open sign
signs.push(s.charAt(i));
} else { // close sign
if (signs.peek() == map.get(s.charAt(i))) {
signs.pop();
}
}
}
return signs.empty() ? true : false;
}
} import java.util.*;
public class Solution {
class AAAA {
char c;
AAAA next;
AAAA pri;
public AAAA (char c) {
this.c = c;
}
}
AAAA quene;
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
// write code here
int lenght = s.length();
quene = new AAAA('0');
for (int i = 0; i < lenght ; i++) {
char c = s.charAt(i);
if (c == '(' || c == '[' || c == '{') {
// 入栈
addAAAA(c);
// 出栈并检查
} else if (quene.c == '0' || !check(c)) {
return false;
}
}
return quene.c == '0';
}
public boolean check (char c) {
// ')' - '(' == 1;
// ']' - '[' == 2;
// '}' - '{' == 2
char a = outAAAA();
return (c - a < 3) && (c - a > 0);
}
public boolean addAAAA (char c) {
AAAA q = new AAAA(c);
q.pri = quene;
quene.next = q;
quene = q;
return true;
}
// 出栈
public char outAAAA() {
char c = quene.c;
AAAA q = quene.pri;
quene.pri = null;
quene = q;
quene.next = null;
return c;
}
} import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
// write code here
Stack<Character> s1 = new Stack<Character>();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '{' || s.charAt(i) == '[' || s.charAt(i) == '(') {
s1.push(s.charAt(i));
} else {
if (!s1.isEmpty() && isMatch(s1.peek(), s.charAt(i))) {
s1.pop();
} else {
return false;
}
}
}
if (s1.isEmpty()) return true;
return false;
}
public boolean isMatch (char s1, char s2) {
switch (s1) {
case '{':
return '}' == s2 ? true : false;
case '[':
return ']' == s2 ? true : false;
case '(':
return ')' == s2 ? true : false;
}
return false;
}
} import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
// write code here
if (s.length() == 0 || s.length() % 2 == 1) {
return false;
}
if (s.charAt(0) == ')' || s.charAt(0) == '}' || s.charAt(0) == ']') {
return false;
}
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(' || s.charAt(i) == '{' || s.charAt(i) == '[') {
stack.push(s.charAt(i));
} else {
Character pop = stack.pop();
if (s.charAt(i) == ')' && pop != '(') {
return false;
}
if (s.charAt(i) == '}' && pop != '{') {
return false;
}
if (s.charAt(i) == ']' && pop != '[') {
return false;
}
}
}
return stack.size() == 0;
}
} public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
public static boolean isValid (String s) {
// write code here
if ((s.length() % 2) != 0) {
return false;
}
int i = 0;
StringBuilder sb = new StringBuilder(s);
while (s.length() >= 2) {
if ((s.charAt(i) == '(') && (s.charAt(i + 1) == ')')) {
sb.delete(i, i + 2);
s = sb.toString();
i = 0;
continue;
}
if ((s.charAt(i) == '[') && (s.charAt(i + 1) == ']')) {
sb.delete(i, i + 2);
s = sb.toString();
i = 0;
continue;
}
if ((s.charAt(i) == '{') && (s.charAt(i + 1) == '}')) {
sb.delete(i, i + 2);
s = sb.toString();
i = 0;
continue;
}
i++;
if (i == s.length() - 1) {
return false;
}
}
return true;
}
}