【LeetCode热题100(59/100)】分割回文串

题目地址: 链接

思路: 依然是简单的递归回溯(枚举所有组合,逐个检查组合中的每个字符串是否为回文串)

js 复制代码
/**
 * @param {string} s
 * @return {string[][]}
 */

let isP = (arr) => {
    for(let str of arr) {
        let n = str.length;
        let m = Math.floor(str.length / 2);
        for(let i = 0; i < m; i ++) {
            if(str[i] !== str[n - 1 - i]) {
                return false;
            }
        }
    }
    return true;
}
var partition = function(s) {
    let ans = [];
    let n = s.length;
    const dfs = (idx, arr) => {
        if(idx == n) {
            ans = [...arr];
            return;
        }
        
        let arrLen = arr.length;
        for(let i = 0; i < arrLen; i ++) {
            let subarr = arr[i];
            arr.push([...subarr, s[idx]]);
            let m = subarr.length;
            subarr[m - 1] += s[idx];
        }
        if(arr.length == 0) arr.push([s[idx]]);
        dfs(idx + 1, arr);
    }

    dfs(0, [])

    let res = [];
    for(const subAns of ans) {
        if(isP(subAns)) res.push(subAns);
    }

    return res;
};
相关推荐
LYFlied39 分钟前
【每日算法】LeetCode 19. 删除链表的倒数第 N 个结点
算法·leetcode·链表
踏浪无痕42 分钟前
计算机算钱为什么会算错?怎么解决?
后端·算法·面试
夏乌_Wx1 小时前
练题100天——DAY28:找消失的数字+分发饼干
数据结构·算法
studytosky1 小时前
深度学习理论与实战:反向传播、参数初始化与优化算法全解析
人工智能·python·深度学习·算法·分类·matplotlib
WolfGang0073211 小时前
代码随想录算法训练营Day48 | 108.冗余连接、109.冗余连接II
数据结构·c++·算法
努力学算法的蒟蒻2 小时前
day35(12.16)——leetcode面试经典150
算法·leetcode·面试
cccc来财2 小时前
角点检测算法:Harris 和 FAST 方法
算法·计算机视觉·特征提取
风中月隐2 小时前
C语言中以坐标的方式图解“字母金字塔”的绘制
c语言·开发语言·算法·字母金子塔·坐标图解法
q_30238195562 小时前
告别“笨重”检测!VA-YOLO算法让疲劳驾驶识别更轻更快更准
算法·yolo
松涛和鸣2 小时前
DAY32 Linux Thread Programming
linux·运维·数据库·算法·list