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;
}
}
本文介绍了一种通过递归方式解决字符串回文划分问题的方法。该算法能够找出所有可能的回文子串组合,使原始字符串被划分为多个回文子串。文中详细解释了递归函数的工作原理,并提供了完整的C#代码实现。
630

被折叠的 条评论
为什么被折叠?



