给定一个字符串:“blablafblafbla”和2个限制:x = 3,y = 5 我想找到长度在x和y之间的最长重复子字符串。有很多,第一个 在我的例子中,这将是“blaf” 几个问题: 1.是否更容易使用正则表达式? 2.我知道如何找到最长的子字符串,但我必须把它的条件放在x和y之间?查找长度在x和y之间的最长重复子字符串
public static String longestDuplicate(String text)
{
String longest = "";
for (int i = 0; i < text.length() - 2 * longest.length() * 2; i++)
{
OUTER: for (int j = longest.length() + 1; j * 2 < text.length() - i; j++)
{
String find = text.substring(i, i + j);
for (int k = i + j; k <= text.length() - j; k++)
{
if (text.substring(k, k + j).equals(find))
{
longest = find;
continue OUTER;
}
}
break;
}
}
return longest;
}
我抱歉,您的控制语句是_bad_。我强烈建议您在编写代码时学习更好的实践。你为什么使用标签?真的需要一个'继续'的声明,或者循环的设计是否有所不同? –
这是什么意思“坏”? –
@LuciC:这段代码有多个问题。几乎任何时候你必须使用定向的“break”或“continue”,你想退一步说“嗯,也许我在这里遇到了一些麻烦。” *特别是*如果你发现自己编写的循环永远不会实际循环,除非一个内部循环抛出一个定向的'continue',就像你的循环标记为'OUTER'一样。在回路的终端条件下进行重要计算是另一个危险信号。但这是http://codereview.stackexchange.com所有的东西,不是SO。 :-) –