列表
一:js获取字符串最长回文串
二:判断字符串是否是回文
一:js获取字符串最长回文串
// 方法一:暴力破解法,思路就是每个都拿出来,根据长度排个序
function comparm(a,b){
return b.length-a.length
}
function testReverse(str){
return str === str.split('').reverse().join('')
}
function longestPalindrome(s){
if(s.length < 2){return s}
var i,j ,list =[];
for(i = 0;i<s.length;i++){
for(j=i+1;j<s.length;j++){
const news = s.slice(i,j)
if(testReverse(news)){
list.push(news)
}
}
}
const newsss = list.sort(comparm)
return newsss[0]
}
const aa = longestPalindrome('hjkljgghlkjklhsyh')
console.log(aa) //hlkjklh
// 方法二:leetcode上有个中心扩展法,就是中心超两侧判断是否一样,
// 判断到不一样为止,存符合条件的起止位置,可判断出最大的长度
var longestPalindrome = function(s) {
var start = 0,end=0;
for(var i=0;i<s.length;i++){
const l1 = search(s,i,i)
const l2 = search(s,i,i+1)
const max = Math.max(l1,l2)
if(max>end-start){
start = i-Math.floor((max-1)/2)
end = i+(Math.floor(max))/2
}
}
return s.slice(start,end+1)
//需要返回长度
function search(s,l,r){
let left = l;
let right = r;
while(left >= 0 && right < s.length && s[left] === s[right]){
left--
right++
}
return right-left-1
}
};
const aa = longestPalindrome('sisjhksskhjij')
console.log('--aa',aa) //jhksskhj
二:判断字符串是否是回文
// 方法一:转成数组翻转下
function testReverse(str){
return str === str.split('').reverse().join('')
}