leetcode题目:Palindrome Partitioning 和Palindrome Partitioning II

题目一:

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)从字符串尾部开始存入可能的回文串。

代码:

class Solution {
public:
	vector<vector<string>> partition(string s)
	{
		int len = s.size();
		vector<vector<bool>>f(len+1,vector<bool>(len));
		for (int i=1;i<len+1;i++)
		{
			for (int j = i-1;j>=0;j--)
			{
				if(ispalindrome(s,j,i-1)==1)
				{
					f[i][j]=true;
				}
			}
		}
		dealstring(s,len,f);
		return m_str;
	}
private:
	vector<vector<string>>m_str;
	vector<string>m_temstr;
	void dealstring(string s,int count,const vector<vector<bool>>&f)
	{
		if (count == 0)
		{
			vector<string>oneanswer(m_temstr.rbegin(),m_temstr.rend());
			m_str.push_back(oneanswer);
		}
		for (int i=0;i<count;i++)
		{
			if (f[count][i])
			{
				m_temstr.push_back(s.substr(i,count-i));
				dealstring(s,i,f);
				m_temstr.pop_back();
			}

		}

	}
	int ispalindrome(string s,int i,int j)
	{
		while (i<j)
		{
			if (s[i]!=s[j])
			{
				return 0;
			}
			i++;
			j--;
		}
		return 1;
	}
};

题目二:

Given a string s, partition s such that every substring of the partition is a palindrome.

Return the minimum cuts needed for a palindrome partitioning of s.

For example, given s = "aab",

Return 1 since the palindrome partitioning ["aa","b"] could
be produced using 1 cut.

解题思路:

1)用二维数组存入判断两者之间是否是回文。

2)同时用一个一维数组存取从这个点开始往右的最小切数。

代码:

class Solution {
public:
	int minCut(string s)
	{
	    int size = s.size();
	    int mincount[size+1];
	    vector<vector<bool> >m_bool(size,vector<bool>(size));
	    for(int i=0;i<=size;i++)
	    {
	        mincount[i] = size-1-i;
	    }
	    for(int j=size-1;j>=0;j--)
	    {
	        for(int k = j;k<size;k++)
	        if(s[j]==s[k]&&(k-j<2||m_bool[j+1][k-1]))
	        {
	            m_bool[j][k]=true;
	            mincount[j]=min(mincount[j],mincount[k+1]+1);
	        }
	    }
	    return mincount[0];
	}
};

leetcode题目:Palindrome Partitioning 和Palindrome Partitioning II

时间: 2025-01-31 03:49:15

leetcode题目:Palindrome Partitioning 和Palindrome Partitioning II的相关文章

【leetcode刷题笔记】Palindrome Partitioning

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

【leetcode】1328. Break a Palindrome

题目如下: Given a palindromic string palindrome, replace exactly one character by any lowercase English letter so that the string becomes the lexicographically smallest possible string that isn't a palindrome. After doing so, return the final string.  If

leetcode题目思路以及部分解答(二)

又刷了30题了,这速度还不错.因为还有别的东西要复习,所以进度并不快.感觉还是能学到很多新东西的.早知道这个就不用去其他地方刷了.这个难度不高,还可以知道哪些情况没考虑.比其他OJ那种封闭式的好多了.还是进入正题吧. 1.Rotate Image 这个做过两三次了,但每次还是得重新开始推导..这次又推导了很久..不过好在做过,代码也写得比较简洁. 主要思路就是第一层循环按层次深入.第二层把旋转后对应替代的4个位置循环更新.swap就是用来更新用的.做完发现讨论里的最高票代码就是我这样子= =  

【Leetcode】Binary Tree Level Order Traversal II

Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root). For example: Given binary tree {3,9,20,#,#,15,7}, 3 / 9 20 / 15 7 return its bottom-up level order trave

leetcode题目思路以及部分解答(一)

为了进好公司这一个多月就得抽时间刷leetcode了..感觉这个OJ很不严谨...好多边界条件都没说清处..不过还好可以推测.唯一的好处就是不用自己编译调试,可以直接在网上显示出结果.当然,复杂一点的题目为了调试自己构建题目的结构也是很麻烦的...所以我发现提交里面错误好多.....再就是在笔记本上会时不时的变卡...每次提交都得等个3,4分钟才成功.要不就502错误... 我的题目按照通过率来.从通过率最高的题目开始讲解.每题不一定是最优解,都是我想得.仅供参考. 题目标题我都标好了.可以用c

leetcode第一刷_Combination Sum Combination Sum II

啊啊啊啊,好怀念这种用递归保存路径然后打印出来的题目啊,好久没遇到了. 分了两种,一种是可以重复使用数组中数字的,一种是每个数字只能用一次的.其实没有多大区别,第一种每次进入递归的时候都要从头开始尝试,第二种要找一个标记的数组,把已经用到过的排除掉,就像生成全排列时的做法一样.跟我一样用引用保存中间结果的话,要注意回退的情况.第二种回退时,要把用到的那个数也恢复为可用,就完全像全排列时做的一样.破例贴两个题的代码,因为他们是在是不值得用两片文章来写. class Solution { publi

Leetcode 树 Binary Tree Level Order Traversal II

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie Binary Tree Level Order Traversal II Total Accepted: 10080 Total Submissions: 32610 Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, l

leetcode题解:Tree Level Order Traversal II (二叉树的层序遍历 2)

题目: Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root). For example:Given binary tree {3,9,20,#,#,15,7}, 3 / 9 20 / 15 7 return its bottom-up level order tr

【Leetcode】Median of Two Sorted Array II

There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)). 非常经典的一个问题,如果直接查找中位数,即偶数约定向下取整,奇数就是严格的中位数,这个题目直接可以比较每个数组的mid来计算得到. 但是这个问题的需求更改为如果为偶数,则中