我试图弄清楚如何使用parens检查String
格式是否正确:(
和)
。 (
的{{1}}数应与)
相同。此外,应该正确格式化parens,以便(
和)
形成一对。其他字符可能会显示在String
。
示例:
"()()()()()()()" // Valid
"((a)(b)((cd)e))" // Valid
"((d()mk()))()" // Valid
"((d()mk())))(" // Invalid, the last two parens don't form a pair.
")()" // Invalid, not equal number of paren types
所以,我认为第一步是检查(
中)
与String
的数量是否相同(我发现此页面有助于String
Brackets in String }})。
我不知道如何接近零件以检查import java.util.*;
public class BracketProblem {
public boolean checkBrackets(String str) {
Stack st = new Stack();
for(int i = 0; i < str.length(); i++){
char x = str.charAt(i);
if (x == '(')
st.push(x);
if (!st.empty()){
if (x == ')')
st.pop();
}
}
if(!st.empty())
return false;
else {
return true;
}
}
public static void main(String[] args){
String str = args[0];
BracketProblem bp = new BracketProblem();
System.out.println(bp.checkBrackets(str));
}
}
格式是否正确。
你们能给我一个提示吗?
编辑:
我的解决方案是:
{{1}}
答案 0 :(得分:4)
拿一张纸,用铅笔在上面写下你的绳子(笔会做),然后自己做检查,同时跟踪你在纸上的进度。
现在尝试制定你在Java中所做的事情。
更新:抱歉,如果这听起来粗鲁无礼,但是为自己解决问题的能力远比任何算法都重要。
答案 1 :(得分:3)
使用堆栈 - 阅读char
中的String
。在阅读时按(
。阅读(
时弹出)
。
需要注意的事项:
)
并且堆栈顶部没有(
,则表示该错误。String
的末尾并且堆栈没有空,则表示该错误。String
的末尾且堆栈为空,那么它就是有效的String
。以下是解释Stack Concept。
的链接 注意:出于您的目的,您可以忽略char
中的其他String
。
答案 2 :(得分:2)
制作一个反变量;在看到(
时递增它,并在看到)
时递减它。如果您的计数器变量最后不是0,则括号的数量不均匀。
然而,正如评论中建议的ajb一样,请确保计数器变量永远不会消极,因为这意味着)(
这样的情况(这是一个偶数个括号,但技术上不匹配)。