131. Palindrome Partitioning
problem description
Given a string s, partition s such that every substring of the partition is a palindrome.
Return all possible palindrome partitioning of s.
Example:
algorithm thought
我第一次做这个题的时候,认为这是一个动态规划问题。定义了一个三维数组,保存之前的结果,用类似做最长增长子序列的方法解这个题。感觉时间复杂度应该是控制的还不错了。但是这种方法需要的 空间太多,并且每次得到结果都需要复制一遍所有的数字,太慢了。所以后面看到discuss使用回溯法做这个题。发现其实回溯法也不会太慢。确实,回溯法在这里会有重复计算是否是回文数的情况,但是相比动态规划的复制一整个数组,整个速度还是提高了。
因为重复计算的是判断回文字符的部分,其实这个和复制相比就很小。下一题我么不需要返回结果只需要返回个数,这时候用动态规划显然更好
code
algorithm analysis
时间复杂度应该是(n*2^n),这也是回溯法找到找到所有集合的普遍时间复杂度
Last updated