首页 > 代码库 > Leetcode#131 Palindrome Partitioning

Leetcode#131 Palindrome Partitioning

原题地址

 

因为要找所有的解,只能搜索+回溯了

看来数据量比较小,关于回文串的判断没有使用动态规划也可以过

 

代码:

 1 vector<vector<string> > res; 2  3 bool palindromep(string s) { 4   int i = 0; 5   int j = s.length() - 1; 6   while (i < j && s[i] == s[j]) { 7     i++; 8     j--; 9   }10   return i >= j;11 }12 13 void dfs(string s, vector<string> ans, int pos) {14   if (pos == s.length())15     res.push_back(ans);16   for (int len = 1; pos + len <= s.length(); len++) {17     if (palindromep(s.substr(pos, len))) {18       ans.push_back(s.substr(pos, len));19       dfs(s, ans, pos + len);20       ans.pop_back();21     }22   }23 }24 25 vector<vector<string>> partition(string s) {26   dfs(s, vector<string>(), 0);27   return res;28 }

 

Leetcode#131 Palindrome Partitioning