暴力破解法:
import java.util.Scanner;
/**
* 【密码截取】
*
* 描述:
* Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,比如像这些ABBA,ABA,A,123321,
* 但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解。
* 比如进行下列变化 ABBA->12ABBA,ABA->ABAKK,123321->51233214 。
* 因为截获的串太长了,而且存在多种可能的情况(abaaab可看作是aba,或baaab的加密形式),
* Cathcer的工作量实在是太大了,他只能向电脑高手求助,
* 你能帮Catcher找出最长的有效密码串吗?
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String nextLine = sc.nextLine();
char[] chars = nextLine.toCharArray();
int maxLength = 0;
for (int length = chars.length - 1; length >= 0; length--) {
int count = 0; // 记录最大长度
for (int left = 0, right = length, k = 0; left < right;) {
if (chars[k] == chars[right]) {
k++;
right--;
count++;
if (k == right) { // ABA型
count = count * 2 + 1;
maxLength = Math.max(count, maxLength);
break;
} else if (k > right) { // ABBA型
count = count * 2;
maxLength = Math.max(count, maxLength);
break;
}
} else {
left++; // 左加1
k = left;
right = length; // 右复位
count = 0; // 计数器复位
}
}
}
System.out.println(maxLength);
}
}