例如,如果括号/括号在以下匹配:
({})
(()){}()
()
以此类推,但如果括号/括号不匹配,则应返回 false,例如:
{}
({}(
){})
(()
等等。你能检查一下这个代码吗?提前致谢。
public static boolean isParenthesisMatch(String str) {
Stack<Character> stack = new Stack<Character>();
char c;
for(int i=0; i < str.length(); i++) {
c = str.charAt(i);
if(c == '{')
return false;
if(c == '(')
stack.push(c);
if(c == '{') {
stack.push(c);
if(c == '}')
if(stack.empty())
return false;
else if(stack.peek() == '{')
stack.pop();
}
else if(c == ')')
if(stack.empty())
return false;
else if(stack.peek() == '(')
stack.pop();
else
return false;
}
return stack.empty();
}
public static void main(String[] args) {
String str = "({})";
System.out.println(Weekly12.parenthesisOtherMatching(str));
}
最佳答案
您的代码在处理“{”和“}”字符时有些困惑。它应该与您处理 '(' 和 ')' 的方式完全平行。
这段代码稍加修改,似乎可以正常工作:
public static boolean isParenthesisMatch(String str) {
if (str.charAt(0) == '{')
return false;
Stack<Character> stack = new Stack<Character>();
char c;
for(int i=0; i < str.length(); i++) {
c = str.charAt(i);
if(c == '(')
stack.push(c);
else if(c == '{')
stack.push(c);
else if(c == ')')
if(stack.empty())
return false;
else if(stack.peek() == '(')
stack.pop();
else
return false;
else if(c == '}')
if(stack.empty())
return false;
else if(stack.peek() == '{')
stack.pop();
else
return false;
}
return stack.empty();
}
关于java - 使用堆栈算法进行括号/括号匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16874176/