leetcode每日一道(18)神仙思路!返回字符串所有的回文子串切分结果

news/2024/7/20 22:53:10 标签: LeetCode, 深度优先, 切分, 回文

题目描述

给定一个字符串s,分割s使得s的每一个子串都是回文
返回所有的回文分割结果。(注意:返回结果的顺序需要和输入字符串中的字母顺序一致。)
例如:给定字符串s=“aab”,
返回 [“aa”,“b”],↵ [“a”,“a”,“b”]

深度优先搜索思路

子在川上曰:如果要求输出所有可能的解,往往都是要用深度优先搜索。如果是要求找出最优的解,或者解的数量,往往可以使用动态规划。
记住这句话,超级有用。
那么这道题的话,当然是用深度优先搜索的策略了。
先定义两个全局变量,然后通过深度优先搜索,不断维护这两个vector,最后返回答案即可。
我记得前面有一篇很类似的题,leetcode每日一道(10)字符串切分为单词的所有可能的结果。简直一模一样的,只是上一篇把它看成了递归,这次是看成了dfs。因此这类题是一定要掌握的!关键时候能救命啊伙伴们!

另外还有个,如何判定回文串,c++中有反向迭代器,可以一步到位:

 bool ishuiwen(string s){
        return s==string(s.rbegin(),s.rend());

代码

class Solution {
public:
    // 设置两个全局变量
    vector<vector<string>> result;
    vector<string> cur;
    vector<vector<string>> partition(string s) {
        dfs(s);
        return result;
    }

    bool ishuiwen(string s){
        return s==string(s.rbegin(),s.rend());
    }
     
    void dfs(string s){
        if (s==""){
            result.push_back(cur);
            return;
        }
        for(int i=1;i<=s.length();i++){
            if (ishuiwen(s.substr(0,i))){
                cur.push_back(s.substr(0,i));
                dfs(s.substr(i,s.length()-i));
                cur.pop_back();
            }
        }
    }
};

http://www.niftyadmin.cn/n/880056.html

相关文章

我不能没有的5个Vue.js库

微信搜索【前端全栈开发者】关注这个脱发、摆摊、卖货、持续学习的程序员&#xff0c;第一时间阅读最新文章&#xff0c;会优先两天发表新文章。关注即可大礼包&#xff0c;准能为你节省不少钱&#xff01; 1.Click Off to Close 有的时候&#xff0c;我们需要在用户点击元素之…

leetcode每日一道(19)逆向思维!模拟围棋:请捕获所有的被‘X’包围的区域

题目描述 现在有一个仅包含‘X’和‘O’的二维板&#xff0c;请捕获所有的被‘X’包围的区域 捕获一个被包围区域的方法是将被包围区域中的所有‘O’变成‘X’ 例如 X X X X X O O X X X O X X O X X 执行完你给出的函数以后&#xff0c;这个二维板应该变成&#xff1a; X X X …

Windows Terminal完整指南

在本文中&#xff0c;我们将探讨Windows Terminal&#xff0c;它是WSL2的理想配套。它速度快、可配置、外观漂亮&#xff0c;并且提供了Windows和Linux开发的所有优点。 Windows已经完全接受了Linux&#xff0c;而WSL2使它成为一种无缝的乐趣。 你可以通过以下方式访问发行版…

只用一个CSS属性打造自适应网站

用一个CSS属性创建一个响应式网站&#xff0c;让我们来看看它是如何做到的。&#x1f914; 以这个模板为例&#xff0c;没有应用css属性。&#x1f5a5; 使用 clamp() CSS函数&#xff0c;我们可以创建仅具有一个属性的响应式网站。 现在添加魔术CSS clamp(minimum, preferr…

leetcode每日一道(20)深度优先!二叉树路径代表的数字之和

题目描述 给定一个仅包含数字0-9的二叉树&#xff0c;每一条从根节点到叶子节点的路径都可以用一个数字表示。 例如根节点到叶子节点的一条路径是1->2->3,那么这条路径就用123来代替。 找出根节点到叶子节点的所有路径表示的数字之和 例如&#xff1a; 1↵ / ↵ 2 3 根节…

10个有用的HTML文件上传技巧

上传文件的能力是许多Web和移动应用的关键需求&#xff0c;从将照片上传到社交媒体上到将简历发布到工作门户网站上&#xff0c;文件上传无处不在。 作为一名Web开发人员&#xff0c;我们一定知道HTML提供了原生文件上传的支持&#xff0c;并借助于JavaScript的一点帮助。在HT…

一图看懂TensorFlow2.0系列(一) TensorFlow1.0和TensorFlow2.0究竟有什么区别?

最近集中精力把B站的课程&#xff1a;Google工程师亲授TensorFlow2.0给听完了&#xff0c;是一个大佬讲的课&#xff0c;大佬叫什么正十七来着&#xff0c;我强烈建议大家听一听&#xff0c;可以说是思路清晰&#xff0c;准备充足&#xff0c;代码强悍&#xff0c;深入浅出。。…