131. 分割回文串
Posted hequnwang10
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了131. 分割回文串相关的知识,希望对你有一定的参考价值。
一、题目描述
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。
回文串 是正着读和反着读都一样的字符串。
示例 1:
输入:s = "aab"
输出:[["a","a","b"],["aa","b"]]
示例 2:
输入:s = "a"
输出:[["a"]]
二、解题
DFS解法
回溯算法
class Solution
public List<List<String>> partition(String s)
List<List<String>> res = new ArrayList<>();
List<String> per = new ArrayList<>();
dfs(res,per,s);
return res;
public void dfs(List<List<String>> res ,List<String> per,String s)
//终止条件
if(s.length() == 0)
res.add(new ArrayList<>(per));
return ;
for(int i = 0;i<s.length();i++)
//判断是否为回文字符串
if(isPal(s,0,i))
per.add(s.substring(0,i+1));
dfs(res,per,s.substring(i+1));
per.remove(per.size() - 1);
//判断是否为回文串
public boolean isPal(String s,int left,int right)
while(left < right)
if(s.charAt(left) != s.charAt(right))
return false;
left++;
right--;
return true;
以上是关于131. 分割回文串的主要内容,如果未能解决你的问题,请参考以下文章