LeetCode[5]-最长回文子串_leetcode 合并区间

LeetCode[5]-最长回文子串_leetcode 合并区间给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串。示例 1:输入:s = “aab”输出:[[“a”,”a”,”b”],[“aa”,”b”]]示例 2:输入:s = “a”输出:[[“a”]] 提示:1 <= s.length <= 16s 仅由小写英文字母组成题解暴搜class Solution {public: vector<vector<st

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。

回文串 是正着读和反着读都一样的字符串。

示例 1:

输入:s = "aab"
输出:[["a","a","b"],["aa","b"]]
示例 2:

输入:s = "a"
输出:[["a"]]
 

提示:

1 <= s.length <= 16
s 仅由小写英文字母组成

题解
暴搜

class Solution { 
   
public:
    vector<vector<string> >res;
    bool check(string x){ 
   
        if(x.size() & 1){ 
   
            int mid = x.size() / 2;
            int i = 1;
            while(mid - i >= 0){ 
   
                if(x[mid - i] != x[mid + i])return false;
                i ++;
            }
            return true;
        }
        else { 
   
            int l = x.size() / 2 - 1;
            int r = x.size() / 2 ;
            int i = 0;
            while(l - i >= 0){ 
   
                if(x[l - i] != x[r + i])return false;
                i ++;
            }
            return true;
        }
    }
    vector<string>t;
    void dfs(int u,string &s){ 
   
        if(u == s.size()){ 
   
            res.push_back(t);
            return;
        }
        for(int len = 1;len <= s.size() - u;len ++){ 
   
            if(check(s.substr(u,len))){ 
   
                t.push_back(s.substr(u,len));
                dfs(u + len,s);
                t.pop_back();
            }
        }
    }
    vector<vector<string>> partition(string s) { 
   
        dfs(0,s);

        return res;
    }
};
  1. dp+dfs
class Solution { 
   
public:
    static const int N = 20;
    bool f[N][N] = { 
   false};
    vector<vector<string> >res;
    vector<string>t;
    void dfs(int u,string &x){ 
   
        if(u == x.size()){ 
   
            res.push_back(t);
            return;
        }
        for(int len = 1;len <= x.size() - u;len ++){ 
   
            int l = u,r = u + len - 1;
            if(!f[l][r])continue;
            t.push_back(x.substr(u,len));
            dfs(r + 1,x);
            t.pop_back();
        }
    }
    vector<vector<string>> partition(string s) { 
   
        int n = s.size();
        for(int len = 1;len <= n;len ++){ 
   
            for(int l = 0;l <= n - len;l ++){ 
   
                int r = l + len - 1;
                if(len == 1)f[l][r] = true;
                else if(len == 2)f[l][r] = (s[l] == s[r] ? true:false);
                else f[l][r] = (s[l] == s[r] ? f[l + 1][r - 1]:false);
            }
        }
        dfs(0,s);

        return res;
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168653.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 怎么删除pycharm的项目_怎样删除pycharm创建的项目

    怎么删除pycharm的项目_怎样删除pycharm创建的项目前言os模块和shutil模块是Python处理文件/目录的主要方式。os模块提供了一种使用操作系统相关功能的便捷方式,shutil模块是一种高级的文件/目录操作工具。文件的处理os模块提供了一些便捷功能来使用操作系统资源,比如读取资源目录下的文件、在命令行查看某路径下文件的所有内容等。获取系统类型对代码进行兼容性开发以适应不同操作系统时通过操作系统类型进行判断就可以轻松解决。importosimportsysprint(os.name)#返回nt代表Windows,posix代表L

    2022年8月25日
    5
  • C语言再学习 — 创建excel文件

    C语言再学习 — 创建excel文件参看:C语言操作Excel表格上一篇文章讲了一下cJSON,可以生成json文件了。这篇文章讲一下怎么生成excel表xsl格式文件。注意点:1、文件类型为xls或者xlsx2、使用fprintf写入3、了解转义字符参看:C语言再学习–转义字符示例:uint32_tCreate_Excel(void){ FILE*fp_txt=NULL; fp_txt=fopen(“C:\\Users\\Administrator\\Desktop\\res.xls”,”

    2022年8月30日
    8
  • pycharm怎么添加项目_pycharm 其他

    pycharm怎么添加项目_pycharm 其他pycharm项目添加,在使用pycharm的过程中,有时想要在项目列表中展示多个项目需求第一种情况:原有项目的同级别目录展示另一个项目,如下面的截图操作路径:文件–打开–选择要添加的项目–点附加第二种情况:在原来的项目的主目录下添加拧一个项目,如下面的截图操作路径:文件–设置–项目–项目结构–添加内容根注意:以上两种添加方式:项目的根目录都是第一个项目创建时的根目录,查勘方式,点终端就会显示路径,这个路径也项目的…

    2022年8月25日
    11
  • 微信看一看有访客记录吗_微信到底能不能看访客

    微信看一看有访客记录吗_微信到底能不能看访客这个访客神器,不仅可以看到多少人看了你的朋友圈。还可以知道他们是谁,看了多久…

    2022年9月18日
    2
  • zencart模板修改的地方

    zencart模板修改的地方zencart模闆修改的地方,在修改前一定要備份數據庫和程序文件.1:新聞頁上的zencartnews,如何修改zencart,如圖:修改文件news.php,位置:includes\languages\english2,修改産品頁上面滾動圖片的高度和寬度:修改文件stylesheet_scrollpic.css,位置:includes\templates\模闆名\css在修改不讓自動…

    2022年7月27日
    5
  • pycharm 激活码 2021_最新在线免费激活

    (pycharm 激活码 2021)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html83PVI25FMO-eyJsaWNlbnNlSW…

    2022年3月27日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号