https://leetcode.com/problems/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","b"] ]
这是一道很常规的递归的题
public class Solution
{
public IList<IList<string>> Partition(string s)
{
IList<IList<string>> res = new List<IList<string>>();
if (s == "")
return res;
IList<string> list = new List<string>();
Func(res, list, s);
return res;
}
private void Func(IList<IList<string>> res, IList<string> list, string s)
{
int n = s.Length;
if (n == 0)
res.Add(new List<string>(list));
for (int i = 1; i <= n; i++)
{
string tmp = s.Substring(0, i);
if (isPalindrome(tmp))
{
list.Add(tmp);
Func(res, list, s.Substring(i));
list.Remove(tmp);
}
}
}
private bool isPalindrome(string s)
{
int n = s.Length;
if (n == 1)
return true;
int p1 = 0, p2 = n - 1;
while (p1<p2)
{
if (s[p1] != s[p2])
return false;
p1++;
p2--;
}
return true;
}
}