前端-经典算法

45 阅读1分钟

一、回文字符串

找出所有字符串中的所有回文字符串

function getPalindrome(s){
    const res = new Set();
    for(let i = 0; i < s.length; i++){
        expand(i, i); //单数
        expand(i, i + 1); //双数
    }
    function expand(left, right){
        while( left >= 0 && right < s.length && s[left] === s[right] ){
            res.add(s.substring(left, right+1));
            left--;
            right++;
        }
    }
    return Array.from(res);
}
let str = "asdfajfalkjfhajkfdhjjhjhjhjfdjskd";
let palindromeArr = getPalindrome(str);
console.log(palindromeArr); // ['a', 'b', 'c', 'd', 'cdc', 'bcdcb']