码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode dfs Palindrome Partitioning

时间:2017-06-15 10:36:38      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:sub   tracking   bool   start   round   tle   割点   add   rom   

Palindrome Partitioning

 Total Accepted: 21056 Total Submissions: 81036My Submissions

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
选择一个切割点时,假设从起点到切割点的子串是回文,那么该切割点是合法的。能够选择
按这个规则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

标签:sub   tracking   bool   start   round   tle   割点   add   rom   

原文地址:http://www.cnblogs.com/yxysuanfa/p/7015576.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!