[Leetcode]Palindrome Partitioning

来源:互联网 发布:包装设计用什么软件 编辑:程序博客网 时间:2024/06/03 10:20

方法:回溯

解空间


class Solution {public:    vector<vector<string>> partition(string s) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        ret.clear();        vector<string> ans;        partition(s, 0, ans);        return ret;    }    void partition(string &s, int begin, vector<string> &ans){        if(begin == s.size())        {            ret.push_back(ans);            return;        }        for(int i = begin; i < s.size(); ++i)        {            if(isPalindrome(s, begin, i))            {                ans.push_back(s.substr(begin, i-begin+1));                partition(s, i+1, ans);                ans.pop_back();            }        }      }    bool isPalindrome(string s, int i, int j)    {        while(i < j)        {            if(s[i] != s[j]) return false;            ++i, --j;        }        return true;    }private:    vector<vector<string>> ret;};


原创粉丝点击