131. Palindrome Partitioning
Posted 为了更优秀的你,加油!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了131. Palindrome Partitioning相关的知识,希望对你有一定的参考价值。
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"] ]
解题思路:递归回溯,AC之后发现效率比别人的差了点,总结原因是每次判断子字符是否是回文的时候我都先求了字串,其实可以直接用位置来判断,然后在temp的push操作时再求substr
class Solution { public: bool isPalindrome(string &s){ for(int i=0,j=s.length()-1;i<j;i++,j--){ if(s[i]!=s[j])return false; } return true; } void dfs(vector<vector<string>> &res, int begin, vector<string>&temp, string& s){ if(begin==s.length()){ res.push_back(temp); return; } for(int i=1;i+begin<=s.length();i++){ string str=s.substr(begin,i); if(isPalindrome(str)){ temp.push_back(str); dfs(res,begin+i,temp,s); temp.pop_back(); } } } vector<vector<string>> partition(string s) { vector<vector<string>>res; vector<string>temp; dfs(res,0,temp,s); return res; } };
以上是关于131. Palindrome Partitioning的主要内容,如果未能解决你的问题,请参考以下文章