文章目录
获取一段字符串中的最长对称子串
思路如下:
1.获取字符串的所有偶数位子串集合
2.判断每个长度的第一个子串,如果是对称的就更新result,并判断下一个长度的子串
function getSubStr(str){
let result = '',
subStrLen = 2,
subArr = [],
i=0;
//对称子串长度肯定是偶数位
//获取字符串的所有偶数位子串集合,放到数组中
while(i<str.length-(subStrLen - 1)){
subArr.push(str.slice(i,i+subStrLen));
i++;
if(i>=str.length-(subStrLen - 1)){
i=0;
subStrLen += 2;
}
}
//循环每个子串,找到对称的子串
for(let i=0;i<subArr.length;i++){
let cur = subArr[i];
//如果当前子串反转之后跟原来相等,则说明是对称的,更新result
if(cur.split('').reverse().join('') === cur){
result = cur;
//找到下一个比cur长的字符串的位置
const nextIndex = subArr.findIndex(item=>item.length > cur.length);
if(nextIndex > -1){
//减1是因为i++之后会使i的index多1
i = nextIndex - 1
}else{
//否则说明没有更长的子串了,退出循环即可
break;
}
}
}
return result;
}