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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 计算机二级中的9种运算问题:笛卡尔积,自然连接,交,并,选择,投影。。。

    计算机二级中的9种运算问题:笛卡尔积,自然连接,交,并,选择,投影。。。这九种运算分为7种二元运算2种一元运算用文字和例子来分别解释上面几个概念:7种二元运算:1.笛卡儿积:          已知           如果算X1和X2的笛卡尔积                      则:                   首先将属性(或者叫…

    2022年7月11日
    31
  • s一般怎么称呼自己的m_一般要怎么选合适自己的中频熔炼炉呢?

    s一般怎么称呼自己的m_一般要怎么选合适自己的中频熔炼炉呢?中频熔炼炉全称“中频感应式熔炼炉”,又名中频熔金机,在金属熔炼领域有着广泛的应用,特别是对于首饰铸造加工行业,起着至关重要的地位。市面上的中频熔炼炉那么多要怎么去选择呢?要如何去选择一款安全可靠的设备支持我们的企业的生产不掉链子呢?那就点从下面几个因素开始考虑了。基本我们在挑选设备功率的时候,需要考虑五个因素,1、要根据日常的生产需要去选择相对产品的性能。例如要看加热的体积和相应面积;加热体积大…

    2022年6月23日
    44
  • [日常训练]AekdyCoin的跳棋「建议收藏」

    [日常训练]AekdyCoin的跳棋「建议收藏」AekdyCoin正在玩一个游戏,该游戏要用到两副牌和一个数轴和一个棋子。刚开始的时候棋子位于数轴的0位置。然后AekdyCoin交替的从两副牌中抽取一张牌,然后执行相应的动作。设这两幅牌为A

    2022年7月1日
    23
  • linux 命令

    linux 命令

    2020年11月19日
    217
  • 通达信的5分钟数据格式 *.lc5

    通达信的5分钟数据格式 *.lc532字节为单位:CD003F0233330F42-7B14114266660E423D0A1142B02FF64B-A4B20D0000000000>>>struct.unpack(‘hhfffffii’,buf)(205,575,35.799999237060547,36.270000457763672,35

    2022年7月24日
    72
  • 推荐系统在直播场景的应用(花椒直播)

    推荐系统在直播场景的应用(花椒直播)推荐系统 帮助用户发现内容 克服信息过载通过分析用户行为 对用户兴趣建模 预测用户的兴趣早期 基于热度推荐 热度高的一般质量有保证 但是集中在头部 难以千人千面现代化推荐系统全样本 生成粗排序 百万 再生成精致排序 几百个 在推荐给用户 10 量级 召回与排序 召回基于邻域的协同过滤 1 计算用户与物品的相似度矩阵 2 计算出用户对缺失物品的得分早期使用 基于主播的协同过滤由于是 n

    2026年1月22日
    1

发表回复

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

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