131. 分割回文串

Posted lgz0921

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了131. 分割回文串相关的知识,希望对你有一定的参考价值。

题目链接:https://leetcode-cn.com/problems/palindrome-partitioning/

思路:暴力搜索,从字符串左边一点一点分割搜到最后(用dfs进行分叉,在不同位置对字符串进行分割),如果能搜完整个字符串,说明当前这一组分割是满足要求的,然后保存下来即可。

上代码:

class Solution {
    fun check(s: String): Boolean {
        var l = 0
        var r = s.length - 1
        while (l <= r) {
            if (s[l++] != s[r--]) {
                return false
            }
        }
        return true
    }

    fun dfs(s: String, tmp: ArrayList<String>, result: ArrayList<ArrayList<String>>) {
        if (s.isEmpty()) {
            result.add(ArrayList(tmp))
            return
        }
        for (i in s.indices) {
            val substring = s.substring(0, i + 1)
            if (check(substring)) {
                tmp.add(substring)
                dfs(s.substring(i + 1), tmp, result)
                tmp.removeAt(tmp.size - 1)
            }
        }
    }

    fun partition(s: String): List<List<String>> {
        val result = ArrayList<ArrayList<String>>()
        dfs(s, ArrayList(), result)
        return result
    }
}

 

以上是关于131. 分割回文串的主要内容,如果未能解决你的问题,请参考以下文章

131.分割回文串

131. 分割回文串

LeetCode 131. 分割回文串(Palindrome Partitioning)

LeetCode-131-分割回文串

题目地址(131. 分割回文串)

力扣算法:125-验证回文串,131-分割回文串---js