分割回文数

leetcode
题解如下:
// 判断回文的函数
// 传入开始回溯的归属于s的index和l的尾节点r,(也可以说是用滑动窗口来判断是否为回文数)
// 目的就是为了判断是否会回文数
const isPaire = (s,l,r)=>{
for(let i=l,j=r;i<j;i++,j--){
if(s[i]!=s[j]) return false
}
return true
}
var partition = function(s) {
let res = [],path=[]
let length = s.length
backtracking(s,length,0)
return res
function backtracking(s,length,startIndex){
// 如果回溯的index超过了s的长度,就说明已经全部遍历完了,就可以剪枝了
// 不合适的也没有放到path中,在下面回溯的单层逻辑中有提到怎么区分到底是不是回文
if(startIndex>=length){
res.push(Array.from(path))
return
}
for(let i = startIndex;i<length;i++){
// 判断是否为回文,是的话就执行接下来的代码,不是的话,就执行下一个i
// 判断的是[startIndex,i]是否为回文数,是的话就放进去
if(!isPaire(s,startIndex,i))continue
// 传入的是分割字符串的截取片段,传入的是为回文数的字符串[startIndex,i]
path.push(s.slice(startIndex,i+1))
backtracking(s,length,i+1)//不重复的元素,传入i+1
path.pop()
}
}
};
根据代码随想录老师的题解做出了一些属于自己的理解分析