【发布时间】:2012-09-15 00:05:17
【问题描述】:
我正在尝试在 Java 中查找子回文。但是下面的代码没有提供正确的输出。
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
in.useDelimiter("\n");
String text = in.next();
int start = 0;
int end = 0;
int i = 0;
int j = 0;
while(i <= text.length())
{
j = i+1;
while(j < text.length())
{
if(text.substring(i, j).equals(reverse(text.substring(i, j))))
{
if(j-i > end-start)
{
start = i; end = j;
}
}
j++;
}
i++;
}
System.out.println(start + " : " + end);
}
static String reverse(String s)
{
return new StringBuffer(s).reverse().toString();
}
样本输出:
apros tda adda
7 : 12
after the ostso
11 : 14
att feref
5 : 8
以上都错了。
PS:我知道这不是一个有效的算法。
【问题讨论】:
-
我在查看此内容时找不到错误;你能发布另一个示例输出吗?
-
请务必将花括号放在 if(j-i > end-start) 块周围,否则仅 start = i;将被设置。
-
@mprivat:我认为这可能是他的问题。这就是问题的全部吗?
-
我其实在想为什么它不会崩溃...
标签: java