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();
            }
            
        }
    }
};
 
相关推荐
血色橄榄枝5 小时前
基于用户注册信息的关键词检测挑战赛「Datawhale AI 夏令营」
人工智能·算法·机器学习
c238565 小时前
第二篇:《测试指挥官:可视化单题自测框架(含 assert 实操)》
java·数据库·c++·算法·安全性测试
六点_dn6 小时前
Linux学习笔记-printf命令
linux·运维·算法
遥感知识服务7 小时前
Sentinel-1 + DEM + FwDET + 随机森林:从快速水深初估到多因子误差修正
算法·随机森林·sentinel
来一碗刘肉面7 小时前
顺序表与链表的比较
数据结构·算法·链表
alphaTao7 小时前
LeetCode 每日一题 2026/7/13-2026/7/19
算法·leetcode
nnerddboy8 小时前
脑电信号处理实战 03 | 运动想象脑机接口入门:ERD/ERS、CSP 空间滤波与左右拳想象解码
算法·信号处理
QN1幻化引擎9 小时前
Dalin L — 我造了一门支持中文编程的语言,完整移植到 Rust 了
人工智能·算法·机器学习
Rainy Blue8839 小时前
C转C++速成
c语言·c++·算法
txzrxz9 小时前
二分图详解
数据结构·c++·算法·图论·深度优先搜索·二分图染色