当前位置: 首页 > article >正文

Leetcode 131 Palindrome Partition

题意

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

链接

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

思考

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

题解

dfs每次截取一段字符串,判断是否是回文
退出条件是遍历到末尾了
dfs传入起始位置u, 从第u位开始截取字符串,一直到末尾,末尾有个指针i。一旦发现是回文了就可以继续截取回文。下一个dfs是从第i+1开始

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)


http://www.kler.cn/a/413331.html

相关文章:

  • 【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化?
  • 黑马程序员Java项目实战《苍穹外卖》Day01
  • 面试(十一)
  • 3D扫描对文博行业有哪些影响?
  • 解决整合Django与Jinja2兼容性的问题
  • Linux内核中错误码与错误处理函数
  • 使用 exe4j 将 Spring Boot 项目打包为 EXE 可执行文件
  • 前端面试笔试(六)
  • Ubuntu20.04安装kalibr
  • Linux: C语言解析域名
  • 探索光耦:光耦安全标准解读——确保设备隔离与安全的重要规范
  • linux安全管理-系统环境安全
  • Leetcode437. 路径总和 III(HOT100)
  • BERT的中文问答系统38
  • 猎户星空发布MoE大模型,推出AI数据宝AirDS
  • unity中的Horizontal和Vertical介绍
  • 深入解析经典排序算法:原理、实现与优化
  • 富格林:有效追损正确提高出金
  • 部署 DeepSpeed以推理 defog/sqlcoder-70b-alpha 模型
  • Qt Qt::UniqueConnection 底层调用
  • 多目标优化算法——多目标粒子群优化算法(MOPSO)
  • uni-app 蓝牙开发
  • C++设计模式行为模式———策略模式
  • python控制鼠标,键盘,adb
  • 使用SQL按每小时统计数据的方法
  • C#设计模式——抽象工厂模式(重点)