Palindrome Partitioning
来源:互联网 发布:什么是网络计划 编辑:程序博客网 时间:2024/06/02 10:26
题目描述:
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"]]
使用回溯法,AC代码如下:
class Solution {public: bool isOK(string s){int n = s.size();for (int i = 0, j = n - 1; i < j; ++i, --j){if (s[i] != s[j])return false;}return true;}vector<vector<string>> partition(string s){vector<vector<string>> ans;int n = s.size();if (n == 0) return ans;vector<int> lens(n, 0);int curPos = 0;int index = 0;while (index >= 0){++lens[index];while (curPos + lens[index] <= n && !isOK(s.substr(curPos, lens[index]))){++lens[index];}if (curPos + lens[index] > n){lens[index] = 0;--index;if (index >= 0)curPos -= lens[index];}else{curPos += lens[index];if (curPos == n){int tmpCurPos = 0;vector<string> tmpAns;for (int i = 0; i <= index; ++i){if (lens[i] > 0){tmpAns.push_back(s.substr(tmpCurPos, lens[i]));tmpCurPos += lens[i];}}ans.push_back(tmpAns);curPos -= lens[index];}else{++index;lens[index] = 0;}}}return ans;}};
0 0
- Palindrome partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- Palindrome Partitioning
- 《Testing with Xcode》第三章——Writing Test Classes and Methods
- pushbackInputStream回退输入流
- 欢迎使用CSDN-markdown编辑器
- 玩转Android之MVVM开发模式实战,炫酷的DataBinding!
- 浅析隐藏HTML元素的几种方法
- Palindrome Partitioning
- img的title和alt属性
- Quartz 关于CronTrigger 的 深入
- 树莓派3B as a 无线路由器
- 17-maven插件1
- 整理:著名软件是使用什么语言写的?
- JVM简介
- LeetCode Generate Parentheses递归方法
- ECharts插件简单入门——柱状图