题目
重点掌握方法2写法!!!
法1:DFS+双指针
Python
class Solution:
def partition(self, s: str) -> List[List[str]]:
res = list()
tmp = list()
self.dfs(0, s, tmp, res)
return res
def dfs(self, idx, s, tmp, res):
if idx == len(s):
res.append(tmp.copy())
for i in range(idx, len(s)):
if self.is_valid(s, idx, i):
tmp.append(s[idx:i+1])
self.dfs(i+1, s, tmp, res)
tmp.pop()
def is_valid(self, s, i, j) -> bool:
if i < 0 or i >= len(s) or j < 0 or j >= len(s) or i > j:
return False
l = i
r = j
while l <= r:
if s[l] == s[r]:
l += 1
r -= 1
else:
return False
return True
Java
必须掌握基础方法!
注意:使用ArrayList删除尾元素比LinkedList要快很多!!!
class Solution {
public List<List<String>> <

本文详细阐述了两种DFS方法,分别应用于字符串分割和回文串判断,展示了如何利用ArrayList和动态规划优化性能。
最低0.47元/天 解锁文章
1016

被折叠的 条评论
为什么被折叠?



