Leetcode 131 Palindrome Partition

题意

把一个字符串分割成多个回文字符串的partition,返回所有的可能partion

链接

https://leetcode.com/problems/palindrome-partitioning/description/

思考

这只是dfs套了一个回文问题

题解

dfs每次截取一段字符串,判断是否是回文

退出条件是遍历到末尾了

dfs传入起始位置u, 从第u位开始截取字符串,一直到末尾,末尾有个指针i。一旦发现是回文了就可以继续截取回文。下一个dfs是从第i+1开始

cpp 复制代码
class Solution {
public:
    vector<vector<string>> res;
    vector<vector<string>> partition(string s) {
        vector<string> tmp;
        dfs(0, s, tmp);
        return res;
    }
    void dfs(int u, string s, vector<string>& tmp) {
        if( u == s.size()) {
            res.push_back(tmp);
        }
        for(int i = u; i < s.size(); i++) {
            if(isPalidrome(s, u, i)) {
                string tmpStr = s.substr(u, i-u+1);
                tmp.push_back(tmpStr);
                dfs(i+1, s, tmp);
                tmp.pop_back();
            }
        }
    }
    bool isPalidrome(string s, int u, int i) {
        int l = u;
        int r = i;
        while(l < r) {
            if(s[l] == s[r]) {
                l++;
                r--;
            } else {
                return false;
            }
        }
        return true;
    }
};

时间复杂度 O ( n ∗ 指数级别 ) O(n*指数级别) O(n∗指数级别)

空间复杂度 O ( n ) O(n) O(n)

相关推荐
CoovallyAIHub15 小时前
中科大DSAI Lab团队多篇论文入选ICCV 2025,推动三维视觉与泛化感知技术突破
深度学习·算法·计算机视觉
NAGNIP16 小时前
Serverless 架构下的大模型框架落地实践
算法·架构
moonlifesudo16 小时前
半开区间和开区间的两个二分模版
算法
moonlifesudo16 小时前
300:最长递增子序列
算法
CoovallyAIHub21 小时前
港大&字节重磅发布DanceGRPO:突破视觉生成RLHF瓶颈,多项任务性能提升超180%!
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
英伟达ViPE重磅发布!解决3D感知难题,SLAM+深度学习完美融合(附带数据集下载地址)
深度学习·算法·计算机视觉
聚客AI2 天前
🙋‍♀️Transformer训练与推理全流程:从输入处理到输出生成
人工智能·算法·llm
大怪v2 天前
前端:人工智能?我也会啊!来个花活,😎😎😎“自动驾驶”整起!
前端·javascript·算法
惯导马工2 天前
【论文导读】ORB-SLAM3:An Accurate Open-Source Library for Visual, Visual-Inertial and
深度学习·算法
骑自行车的码农2 天前
【React用到的一些算法】游标和栈
算法·react.js