131. 分割回文串

同组合问题,使用startIndex指针进行递归,每次判断当前字符串是回文。
image.png

  1. class Solution {
  2. public:
  3. bool ispalindrome(string& s,int start, int end)
  4. {
  5. for(int i=start,j=end;i<j;i++,j--)
  6. {
  7. if(s[start]!=s[end])return false;
  8. }
  9. return true;
  10. }
  11. void backtracking(string& s,int startIndex)
  12. {
  13. if(startIndex >= s.size())
  14. {
  15. result.push_back(path);
  16. return;
  17. }
  18. for(int i =startIndex;i<s.size();i++)
  19. {
  20. if(ispalindrome(s,startIndex,i))
  21. {
  22. string str = s.substr(startIndex,i-startIndex+1);
  23. path.push_back(str);
  24. }
  25. else
  26. continue;
  27. backtracking(s,i+1);
  28. path.pop_back();
  29. }
  30. }
  31. vector<vector<string>> partition(string s) {
  32. backtracking(s,0);
  33. return result;
  34. }
  35. vector<string> path;
  36. vector<vector<string>> result;
  37. };