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. 分割回文串的主要内容,如果未能解决你的问题,请参考以下文章