「LeetCode」131-分割回文串⚡️

114 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天,[点击查看活动详情]

大家好,我是速冻鱼🐟,一条水系前端💦,喜欢花里胡哨💐,持续沙雕🌲,是隔壁寒草🌿的好兄弟,刚开始写文章。 如果喜欢我的文章,可以关注➕点赞,为我注入能量,与我一同成长吧~

前言🌧️

算法,对前端人来说陌生又熟悉,很多时候我们都不会像后端工程师一样重视这项能力。但事实上,算法对每一个程序员来说,都有着不可撼动的地位。

因为开发的过程就是把实际问题转换成计算机可识别的指令,也就是《数据结构》里说的,「设计出数据结构,在施加以算法就行了」。

编写指令的好坏,会直接影响到程序的性能优劣,而指令又由数据结构和算法组成,所以数据结构和算法的设计基本上决定了最终程序的好坏

题目🦀

131. 分割回文串

难度中等

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

回文串 是正着读和反着读都一样的字符串。

示例 1:

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

示例 2:

输入:s = "a"
输出:[["a"]]

提示:

  • 1 <= s.length <= 16
  • s 仅由小写英文字母组成

解题思路🌵

  • 一般组合相关问题都需要采用回溯算法来解决

一般的回溯模版

res = []
path = []

def backtrack(未探索区域, res, path):
    if 未探索区域满足结束条件:
        res.add(path) # 深度拷贝
        return
    for 选择 in 未探索区域当前可能的选择:
        if 当前选择符合要求:
            path.add(当前选择)
            backtrack(新的未探索区域, res, path)
            path.pop()

解题步骤🐂

image.png

  • 每次截取一个字串,判断是否为回文串
  • 如果是记录path,将后边的字串继续递归,如果不是继续遍历
  • 当index等于len的时候证明遍历完成了 都为回文串,记录并return

源码🔥

/**
 * @param {string} s
 * @return {string[][]}
 */


var partition = function(s) {
    const isPalindrome = (index,end) => {
        for(let l=index,r=end;l<=r;l++,r--){
            if(s[l]!==s[r]){
                return false
            }
        }
        return true
    }

    const result = []
    const path = []
    const len =s.length

    function backtrack(index){

        if(index === len){
            result.push(Array.from(path))
            return
        }

        for(let i = index; i<len;i++){
            if(!isPalindrome(index,i)){
                continue;
            }
            path.push(s.substr(index,i-index+1))
            backtrack(i+1)
            path.pop()
        }

    }

    backtrack(0)

    return result
    
};

结束语🌞

那么鱼鱼的LeetCode算法篇的「LeetCode」131-分割回文串⚡️就结束了,算法这个东西没有捷径,只能多写多练,多总结,文章的目的其实很简单,就是督促自己去完成算法练习并总结和输出,菜不菜不重要,但是热爱🔥,喜欢大家能够喜欢我的短文,也希望通过文章认识更多志同道合的朋友,如果你也喜欢折腾,欢迎加我好友,一起沙雕,一起进步

github🤖:sudongyu

个人博客👨‍💻:速冻鱼blog

vx👦:sudongyuer

写在最后

伙伴们,如果喜欢我的口水话给🐟🐟点一个赞👍或者关注➕都是对我最大的支持。