您的位置:首页 > 其它

leetcode: Minimum Window Substring

2014-12-07 00:31 351 查看



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


Show Tags

Have you met this question in a real interview?
Yes

No

Discuss

class Solution {
public:

bool isPalindrome(string s)
{
if (s.size() == 1)
return true;

int front = 0;
int rear  = s.size()-1;

while (front < rear)
{
if (s.at(front) == s.at(rear))
{
front++;
rear--;
}
else
{
return false;
}
}
return true;
}

void partitionInternal(string s, vector<string> &curVector, vector<vector<string>> &retVector)
{
if (s.size() == 0)
{
retVector.push_back(curVector);
}

for (int i=1; i<=s.size(); i++)
{
string substring = s.substr(0, i);
if (isPalindrome(substring))
{
curVector.push_back(substring);
partitionInternal(s.substr(i, s.size()-i), curVector, retVector);
curVector.pop_back();
}
// we can not just return if isPalindrome(substring) is false
// for example abbab; ba is false, but bab is ture
}
}

vector<vector<string>> partition(string s) {

vector<vector<string>> retVector;

for (int i=1; i<=s.size(); i++)
{
string substring = s.substr(0, i);
vector<string> curVector;
if (isPalindrome(substring))
{
curVector.push_back(substring);
partitionInternal(s.substr(i, s.size()-i), curVector, retVector);
<span style="white-space:pre">	</span>curVector.pop_back(); // this pop_back is important
}
}

return retVector;
}
};


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: