【发布时间】:2015-05-29 17:28:44
【问题描述】:
如何找到括号中“高分”的值?
private static boolean basicSweep(String input) {
int noOfClosingParentheses = 0;
int noOfOpeningParentheses = 0;
int highScore = 0;
for (int i = 0; i < input.length(); i++) {
Character currentCharacter = input.charAt(i);
if (currentCharacter == '(') {
noOfOpeningParentheses++;
highScore++;
}
else if (currentCharacter == ')') {
noOfClosingParentheses++;
}
}
return false;
}
假设我们有字符串“((P)) & (Q v (R & S))”。 “高分”,或在这种情况下的最大值将是 2,介于 ((P)) 和 (...(R&S)) 之间。我该怎么做呢?我怀疑您将值存储在占位符变量中,但我不确定该变量的确切位置。当前的“highScore”变量只等于左括号的总数,所以这不好。
非常感谢任何帮助。对于任何含糊之处深表歉意 - 这很难解释!
注意:该方法正在进行中 - 无需对缺乏处理进行任何评论!
编辑:一个尝试的答案建议设置 depth 和 maxDepth 变量。不幸的是,在以下实现下,这也不起作用:
int depth = 0;
int maxDepth = 0;
for (int i = 0; i < input.length(); i++) {
Character currentCharacter = input.charAt(i);
if (currentCharacter == '(') {
noOfOpeningParentheses++;
depth++;
maxDepth = depth;
}
else if (currentCharacter == ')') {
noOfClosingParentheses++;
depth--;
}
}
System.out.println(maxDepth);
使用字符串“(((P))) & (P V (Q R))”时,maxDepth 将为 2,而实际答案为 3:(((P)))。
【问题讨论】:
-
根据您的输入,高分将返回 4 而不是 2
-
好力,我说清楚了:“当前的‘highScore’变量只等于左括号的总数……”。
标签: java variables for-loop updates