gpt4 book ai didi

java - Leetcode 问题 - 20. 有效括号

转载 作者:行者123 更新时间:2023-12-01 19:55:00 26 4
gpt4 key购买 nike

我正在尝试解决这个leetcode问题:给定一个仅包含字符 '(', ')', '{', '}', '[' 和 ']' 的字符串,确定输入字符串是否有效。

输入字符串在以下情况下有效:

左括号必须由相同类型的括号封闭。左括号必须按正确的顺序关闭。请注意,空字符串也被视为有效。

我认为我几乎是正确的,并且已经研究这个问题很长时间了,但无法获得正确的输出,特别是在输入为“())”的情况下。

类解决方案{

public boolean isValid(String s) {

Stack<Character> c = new Stack<>();
int n = s.length();
boolean bool = false;

if (s.isEmpty() | s == null) { // Correct
return true;
}

for (int i=0 ; i<n ; i++) {
if (s.charAt(i) == '{') {
c.push('{');
} else if (s.charAt(i) == '[') {
c.push('[');
} else if (s.charAt(i) == '(') {
c.push('(');

} else if (s.charAt(i) == '}' & c.peek() == '{') {
c.pop();
} else if (s.charAt(i) == ']' & c.peek() == '[') {
c.pop();
} else if (s.charAt(i) == ')' & c.peek() == '(') {
c.pop();
} else {
break;
}
}
if (c.isEmpty()) {
return true;
} else {
return false;
}
}

}

最佳答案

如果有人正在寻找 java 解决方案:

 public boolean isValid(String s) {

Stack<Character> stack = new Stack<>();

for(int i=0; i<s.length(); i++){
char strChar = s.charAt(i);
if(stack.empty()){
stack.push(strChar);
} else{
char stkChar = (char) stack.peek();
if(stkChar == '(' && strChar ==')' ){
stack.pop();
} else if(stkChar == '{' && strChar=='}'){
stack.pop();
} else if(stkChar == '[' && strChar == ']'){
stack.pop();
} else{
stack.push(strChar);
}
}
}
return (stack.empty() ? "true" : "false");
}

关于java - Leetcode 问题 - 20. 有效括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59046181/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com