131. Palindrome Partitioning(字符串,dfs回溯)

来源:互联网 发布:剑网三捏脸数据成女 编辑:程序博客网 时间:2024/05/29 09:02

131. Palindrome Partitioning 刷题地址

https://leetcode.com/problems/palindrome-partitioning/#/description

AC

转载思路(dfs了半天没写明白)

http://blog.csdn.net/u012501459/article/details/46792453

重写的ac代码

class Solution {public:    bool isPalindrome(string s, int sta, int en)    {        int i = sta;        int j = en;        while(i < j)        {            if(s[i] != s[j])                return false;            i ++;            j --;        }        return true;    }    void dfs(vector<vector<string>> &ans, vector<string> &v, string &s, int &slen, int index)    {        if(index == slen) // 表示处理完了整个string        {            ans.push_back(v);            return;        }        // index位置之后的字符串,每个位置都可以分割        for(int i = index; i < slen; i++)        {            // 分割得到字符后,满足要求,再继续,直到最后无法对字符串分割            string tmp = s.substr(index, i - index + 1);            if( isPalindrome(tmp, 0, (int)tmp.size() - 1) )            {                v.push_back(tmp);                // i之前的字符处理好了,接着递归处理i之后字符串                dfs(ans, v, s, slen, i + 1);                v.pop_back();            }        }    }    vector<vector<string>> partition(string s) {        int len = s.size();        vector<vector<string>> ans;        vector<string> v;        dfs(ans, v, s, len, 0);        return ans;    }};
阅读全文
0 0
原创粉丝点击