Middle-题目78:131. Palindrome Partitioning

原创 2016年05月31日 16:57:34

题目原文:
Given a string s, partition s such that every substring of the partition is a palindrome.
Return all possible palindrome partitioning of s.
For example, given s = “aab”,
Return
[
[“aa”,”b”],
[“a”,”a”,”b”]
]
题目大意:
返回字符串s的所有回文子串的分割。
题目分析:
使用backtrack(List<List<String>> list, List<String> sublist, String s)维护搜索过程,每次从s的开头开始截取字符串,每次判断一下是否为回文串,如果是就放入sublist,然后去掉加入sublist的部分继续向下搜索,直到s为空。
源码:(language:java)

public class Solution {
    public List<List<String>> partition(String s) {
        List<List<String>> list = new ArrayList<List<String>>();
        backtrack(list,new ArrayList<>(),s);
        return list;
    }
    private void backtrack(List<List<String>> list, List<String> sublist, String s) {
        if(s.length() == 0) {
            list.add(new ArrayList<String>(sublist));
        }       
        else {
            for(int i = 1; i<=s.length();i++) {
                if(isPalindrome(s.substring(0, i))) {
                    sublist.add(s.substring(0, i));
                    backtrack(list, sublist, s.substring(i));
                    sublist.remove(sublist.size()-1);
                }
            }
        }
    }
    public boolean isPalindrome(String s) {
        if(s==null||s.length()==0)
            return true;

        for(int i = 0,j = s.length()-1;i<j;i++,j--) {
            if(s.charAt(i)!=s.charAt(j))
                return false;
        }
        return true;
    }
}

成绩:
8ms,beats 31.90%,众数8ms,29.29%

版权声明:完整版Leetcode题解请出门左转https://github.com/cmershen1/leetcode/tree/master/docs

动态规划——回文最小分割数(palindrome-partitioning-ii)

题目: 给定一个字符串str,返回把str全部切成回文子串的最小分割数。 举例: str="ABA" ,不需要切割,返回0; str="ACDCDCDAD",最少需要切两次,比如"A"...
  • jingsuwen1
  • jingsuwen1
  • 2016年07月17日 21:06
  • 6694

总结最长回文子串的几种做法 Longest Palindrome Substring

题目是:找出一个字符串中的最长回文子串。 例如:abcbcbb 的最长回文子串是 bcbcb 首先一种常见的错误方法是把原字符串S倒转过来成为S‘,以为这样就将问题转化成为了求S和S’的最长公共子串的...
  • hellobinfeng
  • hellobinfeng
  • 2014年03月16日 03:21
  • 2999

[leetcode]Valid Palindrome (判断回文数 C语言实现)

Valid Palindrome Given a string, determine if it is a palindrome, considering only alphanumeric ch...
  • sanmao0816
  • sanmao0816
  • 2015年03月26日 15:37
  • 905

1-11-6 - (2)定义ispalindrome函数(判断输入数据是否回文)

问题及代码:   运行结果: 知识点总结: 学习小结:
  • hexiaole1994
  • hexiaole1994
  • 2014年11月10日 11:17
  • 1111

【LeetCode-面试算法经典-Java实现】【125-Valid Palindrome(回文字验证)】

【125-Valid Palindrome(回文字验证)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a string, determine if it i...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月14日 06:18
  • 2296

【LeetCode】- Valid Palindrome(正确的回文)

[ 问题: ] Given a string, determine if it is a palindrome, considering only alphanumeric characters a...
  • zdp072
  • zdp072
  • 2014年08月28日 08:46
  • 3195

Palindrome Partitioning I 和II的代码和理解(动态规划思想)

Palindrome Partitioning I 和II的代码和理解(动态规划思想)
  • zhangbo_0323
  • zhangbo_0323
  • 2017年04月12日 20:48
  • 97

poj 1159 Palindrome 动态规划的三种解法

区间dp[le][ri]直接求区间[le,ri]最少需要添加多少字符 1.未用滚动数组,会超内存 #include #include #include #include #include #in...
  • yskyskyer123
  • yskyskyer123
  • 2016年03月07日 13:51
  • 104

LeetCode | Palindrome Partitioning(将一个子串划分成回文子串)

Given a string s, partition s such that every substring of the partition is a palindrome. Return ...
  • a45872055555
  • a45872055555
  • 2014年08月15日 21:31
  • 579

国际标准SHARE78七级灾难备份方案

http://www.newmaker.com/art_47263.html 国际标准SHARE78七级灾难备份方案  根据国际标准SHARE 78 的定义,灾难备份技术方案可以根据以下主要方...
  • jing_xin
  • jing_xin
  • 2015年12月09日 20:53
  • 1244
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Middle-题目78:131. Palindrome Partitioning
举报原因:
原因补充:

(最多只允许输入30个字)