【LeetCode热题100】【回溯】分割回文串

题目链接:131. 分割回文串 - 力扣(LeetCode)

要找出所有分割这个字符串的方案使得每个子串都是回文串,写一个判断回文串的函数,深度遍历回溯去找出所有分割方案,判断分割的子串是否是回文串

复制代码
class Solution {
public:
    vector<vector<string> > ans;
    vector<string> an;
    string s;

    bool isPalindromes(int left, int right) {
        while (left < right) {
            if (s[left++] != s[right--])
                return false;
        }
        return true;
    }

    void dfs(int i) {
        if (i == s.size()) {
            ans.push_back(an);
            return;
        }
        for (int j = i; j < s.size(); ++j) {
            if (isPalindromes(i, j)) {
                an.push_back(s.substr(i, j - i + 1));
                dfs(j + 1);
                an.pop_back();
            }
        }
    }

    vector<vector<string> > partition(string s) {
        this->s = move(s);
        dfs(0);
        return ans;
    }
};
相关推荐
啦啦啦_999916 小时前
2. KNN算法之 分类&回归API实现
算法
X journey16 小时前
机器学习进阶(23):K-means聚类
人工智能·算法·机器学习
mjhcsp16 小时前
根号快速计算牛顿迭代法
开发语言·c++·算法·迭代法
菜鸟丁小真16 小时前
LeetCode hot100-79.单词搜索
数据结构·算法·leetcode·深度优先·知识总结
WL_Aurora16 小时前
排序算法(二)
java·算法·排序算法
Tisfy16 小时前
LeetCode 2833.距离原点最远的点:计数
算法·leetcode·字符串·题解·模拟·计数
浅念-16 小时前
LeetCode 模拟算法:用「还原过程」搞定编程题的入门钥匙
开发语言·c++·学习·算法·leetcode·职场和发展·模拟
圣保罗的大教堂16 小时前
leetcode 1722. 执行交换操作后的最小汉明距离 中等
leetcode
t-think16 小时前
操作符详解-C语言(下)
c语言·算法
阿Y加油吧16 小时前
算法二刷复盘|旋转排序数组二分双杀(LeetCode 33 & 153)
算法·leetcode·职场和发展