码迷,mamicode.com
首页 > 其他好文 > 详细

Palindrome Partitioning

时间:2015-04-05 18:47:49      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

这道题采用动态规划的思想。参考了别人的做法。

class Solution{
public:
	vector<vector<string>> result;
    vector<vector<string>> partition(string s) {
     int len = s.length();
	 vector<string> soloresult;

	 if(s.length() == 0)
	 return result;
     vector<vector<int>> buf(len, vector<int>(len));
     dp(s,buf);
     ds(s,buf,0,soloresult);;

	 return result;
	 
    }
	void ds(const string &s,vector<vector<int>>& buf,int index,vector<string>& soloresult)
    {
     
      for(int i=index ; i<s.length();i++)
      {
        if(buf[index][i] == 1)
        {
            soloresult.push_back(s.substr(index,i-index +1));
			if(i == s.length()-1)
			{
                result.push_back(soloresult);
			}
			else
			{
                ds(s,buf,i+1,soloresult);
			}
			soloresult.pop_back();
		}


	  }
	}
	void dp(const string& s,vector<vector<int>>& buf)
    {
      for(int i=s.length()-1; i>=0;i--)
        for(int j=i; j<s.length();j++)
        {
            if(i == j)
            {
               buf[i][j] =1;
			}
			else
			{
                if(s[i] == s[j])
                {
                   if(i+1 >= j-1 || buf[i+1][j-1] == 1)
                   {
                       buf[i][j] = 1;
				   }
				}

			}

		}
	}
	
};

 

Palindrome Partitioning

标签:

原文地址:http://www.cnblogs.com/xgcode/p/4394386.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!