给定一个字符串s,将s分割成一些子串,使每个子串都是回文串。
返回s所有可能的回文串分割方案。
样例
给出 s = “aab”,返回
[
["aa","b"],
["a","a","b"]
]
最后的 结果集 为什么还是 嵌套的vector
实现:
//判断是否为 回文字符串
bool func1(const string& str)
{
if (str == "")
return true;
int length = str.length();
const char* begin = &str[0];
const char* end = &str[length - 1];
// O(n)
while(*begin == *end)
{
if (begin + 1 == end || begin == end)
return true;
++begin;
--end;
}
return false;
}
//将字符串分割
void func2(const string& str)
{
int length = str.length();
for (int i = 0; i <= length; ++i)
{
string temp(str, i, j - 1); // 按for循环分割放入temp
vecString.push_back(temp); // vector<string> vecStri
}
for (auto s : vecString)
{
if (func1(s))
RETURN.push_back(s) // vector<string> RETURN
}
}