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


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

相关推荐

  • 基于树莓派的语音识别和语音合成

    基于树莓派的语音识别和语音合成基于树莓派的语音识别和语音合成摘要语音识别技术即AutomaticSpeechRecognition(简称ASR),是指将人说话的语音信号转换为可被计算机程序所识别的信息,从而识别说话人的语音指令及文字内容的技术。目前语音识别被广泛的应用于客服质检,导航,智能家居等领域。树莓派自问世以来,受众多计算机发烧友和创客的追捧,曾经一“派”难求。别看其外表“娇小”,内“心”却很强大,视频、音频等功…

    2022年6月26日
  • 关于内存管理单元须要掌握的相关知识「建议收藏」

    关于内存管理单元须要掌握的相关知识

    2022年2月7日
  • 手把手教你如何掌控安装Tensorflow(Windows和Linux两种版本)[通俗易懂]

    现在越来越多的人工智能和机器学习以及深度学习,强化学习出现了,然后自己也对这个产生了点兴趣,特别的进行了一点点学习,就通过这篇文章来简单介绍一下,关于如何搭建Tensorflow以及如何进行使用。建议的话,还是要学习了一点Python基础知识和Linux知识是最好的!版本:Windows7一:安装Anaconda和Tensorflow步骤:1:从官方网站下载Anacond…

    2022年4月7日
  • Intellij Idea 创建JavaWeb项目入门(一)

    Idea创建JavaWeb项目步骤:1、打开IntellijIdeaIDE,然后点击CreateNewProject2、左侧选择JavaEnterprise,右侧选择WebApplication3、这里输入项目名字为firstdemo,然后点击Finish完成。生成如下的项目结构:项目配置:1、在web/WEB-INF下创建两个文件夹classes和…

    2022年4月5日
  • 腾讯云的ssl免费证书申请_腾讯云认证证书

    腾讯云的ssl免费证书申请_腾讯云认证证书前提条件:域名是在在腾讯云上购买的1.购买SSL证书1.1登录腾讯云状态下,打开链接https://console.cloud.tencent.com/ssl1.2在证书列表上方点击“申请免费证书”按钮,然后直接点“确定”1.3根据提示填写相关信息,“下一步”1.4选用“自动DNS验证”,“确认申请”1.5等待证书颁发即可,一般1…

    2022年9月9日
  • XMLDocument转为String[通俗易懂]

    XMLDocument转为String[通俗易懂]XMLDocument转为String
            staticpublicstringXmlDocumentToString(refXmlDocumentdoc)
            {
                MemoryStreamstream=newMemoryStream();
                XmlTextWriterwriter=newXmlTextWriter(stream,null);

    2022年6月19日

发表回复

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

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