// J32 密码截取|回文字符
// Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,比如像这些ABBA,ABA,A,123321,但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解。比如进行下列变化 ABBA->12ABBA,ABA->ABAKK,123321->51233214 。因为截获的串太长了,而且存在多种可能的情况(abaaab可看作是aba,或baaab的加密形式),Cathcer的工作量实在是太大了,他只能向电脑高手求助,你能帮Catcher找出最长的有效密码串吗?
function getLen(key) {
let maxLength = 0;
let len = key.length;
for (let i = 0; i < len; i++) {
// 第一种情况 ABBA
let l = i; // 左指针
let r = i + 1; // 右指针
while (l >= 0 && r < len && key[l] == key[r]) { // 1左指针大于等于0,2右指针小于len,3左右指针值相同
l--;
r++;
}
if (r - l - 1 > maxLength) { maxLength = r - l - 1; } // 保存最大值,key.substring(l,r+1)获取当前值
// 第二种情况 ABBBA
l = i;
r = i + 2;
while (l >= 0 && r < len && key[l] == key[r]) {
l--;
r++;
}
if (r - l - 1 > maxLength) { maxLength = r - l - 1; }
}
console.log(maxLength);
}
getLen(readline());
02-11
440
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)