前端算法-回文串分割

简介: 前端算法-回文串分割

题目

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

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

思路一

我们声明一个res变量用于存放返回结果,在声明一个isValid函数用于判断str形参字符串是否为回文字符串,然后在该函数中判断当前str形参字符串长度是否为1,如果是则直接返回true,如果不是则声明一个l变量作为起始位置,在声明一个r变量作为str形参字符串的最后末端位置,我们接下来进行循环,循环条件为l变量小于r变量,在循环中我们判断当前的str字符串l变量位置在str形参字符串中的字符和末端位置在str形参字符串中的位置是否不相等,如果是则返回false,如果不是则继续循环,并将l变量值自增1,r变量值自减1,逐渐往中间值靠拢,最后循环结束后如果没有返回false则直接返回true,接下来声明递归函数dfs,在函数中声明一个开始值和一个存储结果的数组,然后我们判断当前开始的值和s形参字符串的长度是否相等,如果相等则将arr数组使用push方法添加到res数组中,在直接return出去,如果不相等,那么我们就先声明一个temp空字符串,在使用循环对形参s字符串进行循环,初始的循环值为start变量值,在循环中我们将当前循环字串的值与temp变量字符串进行相加,在使用isValid方法判断temp变量字符串是否是回文字符串,如果是则进行下一轮递归,接下来我们调用递归,最后将res数组返回出去即可

var partition = function(s) {
    const res = []
    function isValid(str) {
        if(str.length === 1) {
        return true 
        }
        let l = 0,r = str.length-1
        while(l<r){
            if(str[l] !== str[r]) return false
            l++
            r--
        }
        return true
    }
   const dfs = (start,arr) => {
        if(start === s.length){
            res.push(arr)
            return 
        }
       let temp =''
        for(let i =start;i<s.length;i++){
            temp+=s[i]
            if(isValid(temp)){
                dfs(i+1,[...arr,temp])
            }
        }
    }
    dfs(0,[])
    return res
};


目录
打赏
0
0
0
0
1
分享
相关文章
利用代码分割优化前端性能:策略与实践
在现代Web开发中,代码分割是提升页面加载性能的有效手段。本文介绍代码分割的概念、重要性及其实现策略,包括动态导入、路由分割等方法,并探讨在React、Vue、Angular等前端框架中的具体应用。
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
207 1
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
90 3
前端大模型入门(四):不同文本分割器对比和效果展示-教你如何根据场景选择合适的长文本分割方式
本文详细介绍了五种Langchain文本分割器:`CharacterTextSplitter`、`RecursiveCharacterTextSplitter`、`TokenTextSplitter`、`MarkdownTextSplitter` 和 `LatexTextSplitter`,从原理、优缺点及适用场景等方面进行了对比分析,旨在帮助开发者选择最适合当前需求的文本分割工具,提高大模型应用的处理效率和效果。
336 1
利用代码分割优化前端性能:高级技巧与实践
【10月更文挑战第2天】在现代Web开发中,代码分割是优化前端性能的关键技术,可显著减少页面加载时间。本文详细探讨了代码分割的基本原理及其实现方法,包括自动与手动分割、预加载与预取、动态导入及按需加载CSS等高级技巧,旨在帮助开发者提升Web应用性能,改善用户体验。
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
43 0
一文了解分而治之和动态规则算法在前端中的应用
该文章详细介绍了分而治之策略和动态规划算法在前端开发中的应用,并通过具体的例子和LeetCode题目解析来说明这两种算法的特点及使用场景。
一文了解分而治之和动态规则算法在前端中的应用
sass 公用10个mixins代码块,算法太TM重要了,前端开发要求
sass 公用10个mixins代码块,算法太TM重要了,前端开发要求
数据结构与算法学习十五:常用查找算法介绍,线性排序、二分查找(折半查找)算法、差值查找算法、斐波那契(黄金分割法)查找算法
四种常用的查找算法:顺序查找、二分查找(折半查找)、插值查找和斐波那契查找,并提供了Java语言的实现代码和测试结果。
43 0
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
本文介绍了一个基于用户画像和协同过滤算法的音乐推荐系统,使用Django框架、Bootstrap前端和MySQL数据库构建,旨在为用户提供个性化的音乐推荐服务,提高推荐准确性和用户满意度。
399 7
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等