例如,如果括号/括号在以下情况中匹配:
({}) (()){}() ()
依此类推,但如果括号/括号不匹配,则应返回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(); }