131. Palindrome Partitioning

来源:互联网 发布:mac管理桌面图标 编辑:程序博客网 时间:2024/06/05 13:36

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”]
]

思路:此题第一思路就是回溯,然后就是回溯算法的固定思路解此类问题了。

bool isSubPailndrome(string& str, int low, int high){    if (low == high)return true;    while (low <= high){        if (str[low] == str[high])low++, high--;        else return false;    }    return true;}void dfs_partition(string& s, int start, int end, vector<string>& path, vector<vector<string>>& res){    if (end == s.size()){        if (isSubPailndrome(s, start,end - 1)){            path.push_back(s.substr(start, end - start));            res.push_back(path);            path.pop_back();        }        return;    }    if (isSubPailndrome(s,start,end - 1)){        path.push_back(s.substr(start, end - start));        dfs_partition(s, end, end + 1, path, res);        path.pop_back();    }    dfs_partition(s, start, end + 1, path, res);}vector<vector<string>> partition(string s) {    vector<vector<string>> res;    if (s == "")return res;    vector<string> path;    dfs_partition(s, 0, 1, path, res);    return res;}
原创粉丝点击