首页 > 其他分享 >分割回文串(回溯)

分割回文串(回溯)

时间:2025-01-01 11:29:32浏览次数:1  
标签:子串 分割 示例 int res 回溯 回文

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

示例 1:

输入:s = "aab"
输出:[["a","a","b"],["aa","b"]]

示例 2:

输入:s = "a"
输出:[["a"]]
class Solution {
public:
    vector<vector<string>> res;
    vector<string> temp;
    bool check(string s){
        int start=0;
        int end = s.size()-1;
        while(start<=end){
            if(s[start]!=s[end]){
                return false;
            }
            start++;
            end--;
        }
        return true;
    }
    void backtrack(string s,int start,int end){
        if(start>end){
            res.push_back(temp);
            return;
        }
        //分别截取长度为1,2,3...的子串进行验证,成功则用剩下的部分递归
        for(int i=1;i<=end-start+1;i++){
            if(check(s.substr(start,i))){//判断子串是否为回文串
                temp.push_back(s.substr(start,i));
                backtrack(s,start+i,end);
                temp.pop_back();
            }
        }
    }
    vector<vector<string>> partition(string s) {
        backtrack(s,0,s.size()-1);
        return res;
    }
};

 

标签:子串,分割,示例,int,res,回溯,回文
From: https://www.cnblogs.com/yueshengd/p/18645392

相关文章

  • 单词搜索(回溯)
    给定一个 mxn 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。......
  • 括号生成(回溯)
    数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例1:输入:n=3输出:["((()))","(()())","(())()","()(())","()()()"]示例2:输入:n=1输出:["()"] classSolution{public://存储所有可能的有效括号组合的结果......
  • 组合总和(回溯)
    给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一......
  • 电话号码的字母组合(回溯)
    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意1不对应任何字母。 示例1:输入:digits="23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf&qu......
  • 基于动态阈值图像分割方法和与全局阈值相结合的分割方法-【matlab代码】
    一、概述图像阈值分割方法可分为全局阈值与动态阈值两种。当图像目标物体与背景灰度相差较大时,找到一个全局阈值对图像进行分割可取得比较满意的结果。全局阈值的选取多依靠于灰度直方图,常用的方法有最大类间方差法(Otsu)和最大熵法等。当图像比较复杂,图像背景或物体灰度变化......
  • 穷举vs暴搜vs深搜vs回溯vs剪枝系列一>
    题目:  解析: 决策树:  代码设计:  代码: 写法一:path为全局变量privateintret,path,aim;publicintfindTargetSumWays(int[]nums,inttarget){aim=target;dfs(nums,0);returnret;}privatevoiddfs(i......
  • 子集(回溯)
    给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例1:输入:nums=[1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例2:输入:nums=[0]输出:[[],[0]] class......
  • 全排列(回溯)
    给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例1:输入:nums=[1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例2:输入:nums=[0,1]输出:[[0,1],[1,0]]示例3:输入:nums=[1]输出:[[1]]classSol......
  • 代码随想录——动态规划13.分割等和子集
    思路难点我只想到了:“找一个子集,每个数取或不取求其和,看是否和另一个子集的和相等”但是实际上既然是两个子集相等,那么只要和等于sum/2即可了!取或不取用01背包,但是不知道怎么用。只有确定了如下四点,才能把01背包问题套到本题上来。背包的体积为sum/2背包要放入的商......
  • 拍照文档处理——达到商用级别的基于语义分割与直线检测拍照文档边缘校正(使用NCNN进行
    概述文档图像的边缘校正是图像处理中的一项重要任务,尤其在文档数字化和自动化扫描过程中,确保文档图像的几何形状和内容准确性具有重要意义。传统的文档图像校正方法通常依赖于手动选择或简单的几何变换。然而,随着深度学习和计算机视觉技术的发展,语义分割与直线检测被广泛应......