59 分割回文串

1.题目描述

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

示例 1:

复制代码
输入:s = "aab"
输出:[["a","a","b"],["aa","b"]]

示例 2:

复制代码
输入:s = "a"
输出:[["a"]]

2.代码

cpp 复制代码
class Solution {
public:
    vector<vector<string>> partition(string s) {
        vector<vector<string>> all_valid_result;
        vector<string> current_path;
        backtracking(s,all_valid_result,current_path);
        return all_valid_result;
    }
private:
    bool is_palindrome(string s){
        int left = 0;
        int right = s.size()-1;
        while(left <= right){
            if(s[left]!=s[right])
                return false;
            left++;
            right--;
        }
        return true;
    }

    void backtracking(string remain_str, 
    vector<vector<string>> &all_valid_result,
    vector<string> current_path){
        if(remain_str.size()==0){
            all_valid_result.push_back(current_path);
            return;
        }
        for(int i = 1; i<=remain_str.size();i++){
            //先切割前i个
            string current_candidate = remain_str.substr(0,i);
            //回文才继续
            if(is_palindrome(current_candidate)){
                current_path.push_back(current_candidate);//加入当前路径['a','a']加入a
                //从剩余字符串的第i个开始往后的字符串开始递归
                backtracking(remain_str.substr(i),all_valid_result,current_path);
                current_path.pop_back();
            }
            
        }
    }
};
 
相关推荐
得一录1 小时前
LoRA(Low-Rank Adaptation)的原理和实现
python·算法·机器学习
We་ct1 小时前
LeetCode 106. 从中序与后序遍历序列构造二叉树:题解+思路拆解
前端·数据结构·算法·leetcode·typescript
iAkuya1 小时前
(leetcode)力扣100 72每日温度(栈)
算法·leetcode·职场和发展
weixin_477271691 小时前
掾象:援助,辅佐。基于马王堆帛书《周易》原文及甲骨文还原周朝生活活动现象(《函谷门》原创)
算法·图搜索算法
随意起个昵称1 小时前
建图优化小记
c++·算法
逆境不可逃1 小时前
【从零入门23种设计模式04】创建型之原型模式
java·后端·算法·设计模式·职场和发展·开发·原型模式
一条大祥脚1 小时前
中心拓展法解决回文问题
算法
1 小时前
2.19列阵,私聊调配,求小数位数个数
算法
weixin_477271693 小时前
马王堆帛书《周易》六十四貞如何读象(《函谷门》原创)
算法·图搜索算法