首页 > 代码库 > leetcode dfs Palindrome Partitioning
leetcode dfs Palindrome Partitioning
Palindrome Partitioning
Total Accepted: 21056 Total Submissions: 81036My SubmissionsGiven 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
选择一个切割点时,假设从起点到切割点的子串是回文,那么该切割点是合法的。能够选择
按这个规则dfs枚举就能够了
复杂度:时间O(n)。空间O(log n)
vector<vector<string> >res; bool is_palindrome(const string &s, int start, int end){ while(start < end){ if(s[start] != s[end - 1]) return false; ++start; --end; } return true; } void dfs(const string &s, int cur, vector<string>& partitions){ int size = s.size(); if(cur == size){ res.push_back(partitions); } for(int end = cur + 1; end <= size; ++end){ if(is_palindrome(s, cur, end)){ partitions.push_back(s.substr(cur, end - cur)); dfs(s, end, partitions); partitions.pop_back(); } } } vector<vector<string>> partition(string s) { vector<string> tem; dfs(s, 0, tem); return res; }
leetcode dfs Palindrome Partitioning
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。