【发布时间】:2016-07-05 20:50:56
【问题描述】:
我正在尝试编写一个方法,该方法接受一串花括号,如果括号匹配则返回 true,否则返回 false。
这些是括号匹配的示例:
{ }
{ } { }
{ { } }
{ { { } { { } } } }
这些是括号不匹配的示例:
{
} {
{ { }
{ { } } } { }
我无法弄清楚这段代码背后的正确逻辑。我首先尝试了 length() mod 2,只有当结果为 0 时,该方法才会返回 true。但很明显,有一个错误,因为即使对于像 } { 这样的字符串,它也会返回 true。我添加了一些检测 { 的代码,如果没有找到 },它会自动返回 false。但我仍然收到错误。
这是我的代码:
public boolean bracketsMatch(String brackets)
{
if(!(brackets.length() % 2 == 0))
{
int i = 0;
int j = 0;
boolean check = false;
while(brackets.charAt(i) == '{')
{
for(int o = i + 1; o < brackets.length(); o++)
{
if(o == '}')
{
check = true;
break;
}
else
{
j++;
}
}
if(check == false)
return false;
i + = j;
}
return true;
}
else
{
return false;
}
}
这个问题的正确逻辑是什么,我犯了什么错误?谢谢!
【问题讨论】:
-
试试看
CodeGolf。我在一篇帖子中看到过这样的逻辑。 -
或几乎所有使用此作为测试用例的堆栈教程。
-
您要查找的内容称为“平衡括号”,可以在 SO 上广泛找到,例如在stackoverflow.com/questions/14930073/…