我这个方法的好处是,从大到小来找,找到了就可以直接退出循环,不需要遍历完所有的情况。
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { String line = in.nextLine(); int length = line.length(); String result = ""; //第一次循环,控制每次递减的字符串长度 for (int i = 0; i < length; i++) { int subLength = length - i; //第二次循环,控制每次截取的开始下标,下标小于等于扣减的字符串数量 for (int j = 0; j <= i; j++) { String substring = line.substring(j, j + subLength); if (isHuiWen(substring)) { result = substring; break; } } if (!result.equals("")) { break; } } System.out.println(result.length()); } } public static boolean isHuiWen(String subLine) { StringBuilder stringBuilder = new StringBuilder(subLine); stringBuilder.reverse(); return stringBuilder.toString().equals(subLine); } }