131. Palindrome Partitioning

    xiaoxiao2021-03-25  120

    问题描述 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"] ]

    解决思路 利用深度搜索和回溯法,对于某个下标,该下标往后的子串是回文串时,进行递归调。主要是理解回溯的方法,每次都用不熟。。。

    代码

    class Solution { public: vector<vector<string>> partition(string s) { vector<vector<string>> result; if (s.length() == 0) return result; vector<string> vec; helper(0,s,vec,result); return result; } void helper(int index, string& s, vector<string>& vec, vector<vector<string>>& result) { if (index == s.length()) { result.push_back(vec); return; } for (int i = index; i < s.length(); ++i) { if (isPalindrome(s,index,i)) { vec.push_back(s.substr(index,i-index+1)); helper(i+1,s,vec,result); vec.pop_back(); } } } bool isPalindrome(const string& s, int start, int end) { while(start <= end) { if(s[start++] != s[end--]) return false; } return true; } };
    转载请注明原文地址: https://ju.6miu.com/read-8280.html

    最新回复(0)