首页 > 其他分享 >131.分割回文串

131.分割回文串

时间:2024-09-26 15:49:54浏览次数:1  
标签:分割 return string res startIndex 131 str path 回文

点击查看代码
func partition(s string) [][]string {
    // 1.判断0值输入
    if s == "" {
        return [][]string{}
    }
    res := [][]string{}
    path := []string{}

    // 调用回溯函数
    backtracking(s, 0, &res, path)

    return res
}

func backtracking(str string, startIndex int, res *[][]string, path []string) {
    // 到达叶子结点,说明成功找到了一个划分方案
    if startIndex >= len(str) {
        temp := make([]string, len(path))
        copy(temp, path)
        *res = append(*res, temp)
        return
    }

    // 正常递归回溯过程
    for i := startIndex; i < len(str); i++ {
        // 如果区间内是回文串.左闭右开
        if isPalindrom(str[startIndex : i+1]) {
            path = append(path, str[startIndex:i+1])
            // 递归调用,i+1是下一个起始位置
            backtracking(str, i+1, res, path)
            // 回溯,撤销选择。因为一次回溯之后,必须回到上一步的状态,进行其他可能性的寻找
            path = path[:len(path)-1]
        }
    }
}

func isPalindrom(s string) bool {
    for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
        if s[i] != s[j] {
            return false
        }
    }
    return true
}

标签:分割,return,string,res,startIndex,131,str,path,回文
From: https://www.cnblogs.com/CharlseGo/p/18433592

相关文章

  • 只用单链表的方式判断一个链表是否为回文链表
    思路寻找链表的中点:使用快慢指针的方法,快指针每次移动两步,慢指针每次移动一步。当快指针到达链表末尾时,慢指针正好位于链表的中间。反转后半部分链表:从中点开始反转链表的后半部分。比较前半部分和反转后的后半部分:逐一比较两个部分的节点值,如果所有对应的节点值都相同,则......
  • Day5 JavaWeb知识了解以及每日一题:力扣125.验证回文串
    Day5JavaWeb知识了解以及每日一题:力扣125.验证回文串2024年9月24日20:06:45JavaWeb基础知识TomcatApacheTomcat是一个开源的Servlet容器和Web服务器,它是JavaEE(EnterpriseEdition)的一部分,专门用于运行JavaServlet和JavaServerPages(JSP)。Tomcat的主要功能是接收HTTP......
  • 链表的回文结构
    对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。测试样例:1->2->2->1返回:true什么是回文?:回文是指从前向后读和从后向前读都相同的字符......
  • 【GUI设计】基于图像分割的GUI系统(4),matlab实现
      博主简介:matlab图像代码项目合作(扣扣:3249726188)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        本次案例是基于Matlab的图像处理GUI系统(4),用matlab实现。本次内容主要分为两部分,第一部分是本次图像处理GUI系统功能界面的......
  • [Python手撕]判断回文链表
    #Definitionforsingly-linkedlist.#classListNode:#def__init__(self,val=0,next=None):#self.val=val#self.next=nextclassSolution:defisPalindrome(self,head:Optional[ListNode])->bool:deffindmid(he......
  • Day 20 回溯法part02| LeetCode 39. 组合总和 ,40.组合总和II,131.分割回文串
    39.组合总和39.组合总和classSolution{publicList<List<Integer>>res=newArrayList<>();publicList<Integer>path=newLinkedList<>();publicList<List<Integer>>combinationSum(int[]cand......
  • Leetcode 2464. 有效分割中的最少子数组数目
    1.题目基本信息1.1.题目描述给定一个整数数组nums。如果要将整数数组nums拆分为子数组后是有效的,则必须满足:每个子数组的第一个和最后一个元素的最大公约数大于1,且nums的每个元素只属于一个子数组。返回nums的有效子数组拆分中的最少子数组数目。如果不能进......
  • 算法实现:Java 回文数检测
    题目描述:给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数:是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文数,而 123 不是。题目分析我们做这道题很容易可以想到:我们新建一个变量,这个变量里存放着一个颠倒的x然后用这个数去与我......
  • 了解现代 Web 开发中的 chunkjs:代码分割和性能优化指南
    在Web开发中,尤其是使用React、Vue或Angular等现代JavaScript框架时,chunk.js指的是在应用程序的构建过程中创建的JavaScript捆绑文件。当捆绑或编译Web应用程序时,Webpack或Vite等构建工具会将JavaScript代码分割成称为“块”的较小文件。这些块通常是为了性能优......
  • fastsam_pytorch图像分割算法模型
    FastSAM论文FastSegmentAnything模型结构以yolov8-seg的instancesegmentation为基础,检测时集成instancesegmentation分支,主要分为两步全实例分割(allinstanceSegmentation)和基于prompt的mask输出(Prompt-guidedSelection),仅使用了2%的SA-1B数据集便得到了差不多的......