算法-回溯篇06-分割回文串

分割回文串

力扣题目链接

题目描述

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

解题思路

这里不同于前几道题目,思路改了一下;

解题步骤:

  • isHuiWen函数用于判断字符串是不是回文串;
  • 开始进入回溯函数;
  • 当剩余的字符串的长度为0的时候,把存入的分割子串放入答案列表;
  • 定义一个临时字符串temp,数据是s从begin()到begin() + i;(这里需要注意迭代器的边界判断,搞了很久,最后本地调试了一下才过)
  • 然后判断temp是不是回文串,如果是切割掉temp,把剩余的子串传入回溯函数;
  • 如果不是回文串,继续遍历减少temp的长度,直到长度为1。

题解

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

    bool isHuiWen(string s){
        if(s.size() == 1){
            return true;
        }
        int lp = 0, rp = s.size() - 1;
        while(lp < rp){
            if(s[lp] != s[rp]){
                return false;
            }
            lp++;
            rp--;
        }

        return true;
    }

    void BackTrack(string s){
        if(s.size() == 0){
            ans.push_back(path);
            return;
        }
        for(int i = s.size(); i >= 1; i--){
            string temp(s.begin(), s.begin() + i);
            if(isHuiWen(temp)){
                string nexts(s.begin() + i, s.end());
                path.push_back(temp);
                BackTrack(nexts);
                path.pop_back();
            }            
        }

        return;
    }

    vector<vector<string>> partition(string s) {
        BackTrack(s);
        return ans;        
    }
};
相关推荐
PAK向日葵5 小时前
【算法导论】PDD 0817笔试题题解
算法·面试
地平线开发者7 小时前
ReID/OSNet 算法模型量化转换实践
算法·自动驾驶
地平线开发者7 小时前
开发者说|EmbodiedGen:为具身智能打造可交互3D世界生成引擎
算法·自动驾驶
星星火柴9368 小时前
关于“双指针法“的总结
数据结构·c++·笔记·学习·算法
艾莉丝努力练剑9 小时前
【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
c语言·开发语言·数据结构·c++·学习·算法
C++、Java和Python的菜鸟11 小时前
第六章 统计初步
算法·机器学习·概率论
Cx330❀11 小时前
【数据结构初阶】--排序(五):计数排序,排序算法复杂度对比和稳定性分析
c语言·数据结构·经验分享·笔记·算法·排序算法
散11211 小时前
01数据结构-Prim算法
数据结构·算法·图论
起个昵称吧11 小时前
线程相关编程、线程间通信、互斥锁
linux·算法
myzzb12 小时前
基于uiautomation的自动化流程RPA开源开发演示
运维·python·学习·算法·自动化·rpa