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

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

LeetCode-131-分割回文串

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

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

131. 分割回文串回溯Normal

131. 分割回文串