118_leetcode_Palindrome Partitioning

来源:互联网 发布:淘宝价格变动软件 编辑:程序博客网 时间:2024/04/30 13:10

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

1:特殊情况;2:递归;3:判断一个字符子串是不是回文串;4:注意递归结束情况

    vector<vector<string> > partition(string s)    {        vector<vector<string> > result;        if(s.empty())        {            return result;        }                vector<string> temp;        partitionCore(s, 0, temp, result);                return result;    }        void partitionCore(string s, int index, vector<string> &temp, vector<vector<string> > &result)    {        if(s[index] == '\0')        {            result.push_back(temp);            return;        }                for(int i = index; s[i] != '\0'; i++)        {            string tempStr = s.substr(index, i - index + 1);            if(isPalindromeCore(tempStr.c_str()))            {                temp.push_back(tempStr);                partitionCore(s, i + 1, temp, result);                temp.pop_back();            }        }    }        bool isPalindromeCore(string s)    {        int start = 0;        int end = (int)s.size() - 1;                while(start < end)        {            if(s[start] != s[end])            {                return false;            }            start++;            end--;        }                return true;    }


0 0
原创粉丝点击