Leetcode——分割回文串

Posted Yawn,

tags:

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

1.题目

2. 题解

  • 类似全排列问题,回溯算法解决
  • startIndex为切割起点,i为切割终点

直接回溯三部曲:

  • 递归函数返回值——一般是void,backTraking()
  • 确定终止条件,startIndex >= s.length(),代表切割到最后一位
  • 单层递归,处理节点
class Solution {
    List<List<String>> res = new ArrayList<>();
    List<String> path = new ArrayList<>();

    public List<List<String>> partition(String s) {
        backTracking(s, 0);
        return res;
    }

    public void backTracking(String s, int startIndex){
        //终止条件
        if(startIndex >= s.length()){
            res.add(new ArrayList<String>(path));
            return;
        }

        //单层循环
        for(int i = startIndex; i < s.length(); i++){

            //操作节点,是回文则加入path,不是直接跳过
            if(isPalindrome(s, startIndex, i)){
                String str = s.substring(startIndex, i + 1);
                path.add(str);
            }else{
                continue;
            }  

            //递归
            backTracking(s, i + 1);

            //回溯
            path.remove(path.size() - 1);
        }
    }

    //判断回文子串
    private boolean isPalindrome(String s, int startIndex, int end) {
        while(startIndex < end){
            if (s.charAt(startIndex) != s.charAt(end)) {
                return false;
            }
            startIndex++;
            end--;
        }
        return true;
    }
}

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

LeetCode-131-分割回文串

LeetCode 0131. 分割回文串

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

《LeetCode之每日一题》:246.分割回文串

leetcode131 分隔回文串(Medium)

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