131 Palindrome Partitioning [Leetcode]
2015-10-02 23:02
344 查看
题目内容:
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
题目分析:
使用回溯的方法做,也可以称为DFS的方法。先穷举所有回文分支下的每个分支所有的状况,再添加到结果中去,再回溯回上一个节点。
代码实现,时间8ms:
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"] ]
题目分析:
使用回溯的方法做,也可以称为DFS的方法。先穷举所有回文分支下的每个分支所有的状况,再添加到结果中去,再回溯回上一个节点。
代码实现,时间8ms:
class Solution { public: vector<vector<string>> partition(string s) { vector<vector<string>> result; vector<string> temp; backTracking(s, 0, result, temp); return result; } void backTracking(string &s, int index, vector<vector<string>> &result, vector<string> &temp) { if(index >= s.size()) { result.push_back(temp); return; } for(int i = index; i < s.size(); ++i) { if(isPalindrome(index, i, s)) { temp.push_back(s.substr(index, i-index+1)); backTracking(s, i+1, result, temp); temp.pop_back();//backtrack } } } bool isPalindrome(int start, int end, string &s) { while(start < end) { if(s[start] != s[end]) return false; ++start; --end; } return true; } };
相关文章推荐
- <单调队列><二分>4.偷懒的西西
- ZOJ 3820 Building Fire Stations
- Linux----给一个普通用户root权限
- 运算放大器规范总结
- 常见端口、端口查询及TCP状态
- win7 64位通过dosbox使用debug的方法
- 树的中序遍历(非递归)
- ocp-78
- ocp-77
- Unity mesh 合并
- Climbing Stairs
- 梦想不是挂在嘴边的,是拿行动来证明的
- ocp-76
- ocp-75
- SSH三大框架搭建(非常之基础)
- ocp-74
- IOS开发笔记-01按钮操作-08.git的简单使用
- JS获取浏览器的高度和宽度
- spring boot实战(第五篇)配置源码解析
- Go语言内存分配机制