您的位置:首页 > 其它

[LeetCode] Palindrome Partitioning 回文分割

2014-12-03 09:11 399 查看
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"]
]

output表示从0位到第start-1位之间的字符串所形成的palindrome substrings。当start=s.length()时,搜索结束并返回。

vector<vector<string>> partition(string s) {
// the main function
vector<vector<string>> result;
vector<string> output;
DFS(s, 0, output, result);
return result;
}

void DFS(string &s, int start, vector<string>& output, vector<vector<string>> &result)
{// helper function
// output stores the palindrome found between 0 and start-1
if(start == s.size())
{
result.push_back(output);
return;
}
for(int i = start; i< s.size(); i++)
{
if(isPalindrome(s, start, i))
{
output.push_back(s.substr(start, i-start+1));
DFS(s, i+1, output, result);
output.pop_back();
}
}
}

bool isPalindrome(string &s, int start, int end)
{// helper function
while(start< end)
{
if(s[start] != s[end])
return false;
start++; end--;
}
return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: