if(s.length <2){return s}let start =0, end =0;let n = s.length;// 中心扩散法letcenterExpend=(left, right)=>{while(left>=0&& right <= n && s[left]=== s[right]){
left--;
right++;}return right - left -1}for(let i =0; i < n ; i++){let len1 =centerExpend(i,i)let len2 =centerExpend(i, i+1)let maxLen = Math.max(len1,len2)if(maxLen > end - start){
start = i -((maxLen -1)>>1)
end = i +(maxLen >>1)}}return s.substring(start,end+1)
functiongetAllSubstring(str){if(str.length ===0){return"字符串为空";}let result =[];//保存结果for(let i =1; i <= str.length; i++){//定义子串的长度为i,从1到最长for(let j =0; i + j <= str.length; j++){//i + j <= str.length;注意这个条件,一定要有“=”
result.push(str.substring(j, i + j));//截取字符串,从j开始,到i+j(不包含),长度为i}//for(let j = 0; i + j < str.length; j++){ //这里没有等于// result.push(str.substring(j, i + j + 1)); //截取字符串,从j开始,到i+j(不包含),长度为i + 1,不符合题意//}}return result.join(",");}let re =getAllSubstring("adc");//a,d,c,ad,dc,adc
3.子序列问题
3.1 最长递增子序列
let result =1let dp =newArray(nums.length +1).fill(1)for(let i =1; i < nums.length ; i++){for(let j =0; j < i; j++){if(nums[i]> nums[j]) dp[i]= Math.max(dp[i], dp[j]+1)}
result = Math.max(result, dp[i]);}return result
functiondeepClone(obj ={}){if(typeof obj !='object'|| obj ==null){return obj
}let res
if(obj instanceofArray){
res =[]}else{
res ={}}for(let key in obj){if(obj.hasOwnProperty(key)){
res[key]=deepClone(obj[key])}}return res
}