Palindrome Partitioning
2015-08-01 10:01
295 查看
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 =
Return
速度较快的解法,回溯法:
class Solution {
public:
std::vector<std::vector<std::string> > partition(std::string s) {
len = s.size();
std::vector<std::vector<std::string> > res;
std::vector<std::string> pars;
partitionHelper(s, res, pars, 0);
return res;
}
private:
int len;
void partitionHelper(std::string &s, std::vector<std::vector<std::string> > &res, std::vector<std::string> &pars, int begin) {
if (begin == len)
res.push_back(pars);
for (int end = begin; end != len; ++end)
if (isPalindrome(s, begin, end)) {
pars.push_back(s.substr(begin, end - begin + 1));
partitionHelper(s, res, pars, end + 1);
pars.pop_back();
}
}
bool isPalindrome(std::string &s, int begin, int end) {
while (begin <= end)
if (s[begin++] != s[end--])
return false;
return true;
}
};
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"] ]
速度较快的解法,回溯法:
class Solution {
public:
std::vector<std::vector<std::string> > partition(std::string s) {
len = s.size();
std::vector<std::vector<std::string> > res;
std::vector<std::string> pars;
partitionHelper(s, res, pars, 0);
return res;
}
private:
int len;
void partitionHelper(std::string &s, std::vector<std::vector<std::string> > &res, std::vector<std::string> &pars, int begin) {
if (begin == len)
res.push_back(pars);
for (int end = begin; end != len; ++end)
if (isPalindrome(s, begin, end)) {
pars.push_back(s.substr(begin, end - begin + 1));
partitionHelper(s, res, pars, end + 1);
pars.pop_back();
}
}
bool isPalindrome(std::string &s, int begin, int end) {
while (begin <= end)
if (s[begin++] != s[end--])
return false;
return true;
}
};
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- android string.xml文件中的整型和string型代替
- Android java 与 javascript互访(相互调用)的方法例子
- android上改变listView的选中颜色
- String.intern
- Prototype源码浅析 String部分(二)
- Ruby中的String对象学习笔记
- PostgreSQL ERROR: invalid escape string 解决办法
- 浅谈C++中的string 类型占几个字节
- 标准C++类string的Copy-On-Write技术
- C++实现string存取二进制数据的方法
- C#中string和StingBuilder内存中的区别实例分析
- PHP STRING 陷阱原理说明
- c#中 String和string的区别介绍
- C#实现的图片、string相互转换类分享
- asp.net String.IsNullOrEmpty 方法
- JavaScript中字符串(string)转json的2种方法
- C#中string用法实例详解
- C#中的DataSet、string、DataTable、对象转换成Json的实现代码
- JavaScript中的object转换成number或string规则介绍