zoukankan      html  css  js  c++  java
  • leetcode dfs Palindrome Partitioning

    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;
    }


  • 相关阅读:
    Java学习日记Ⅰ
    docker 安装redis
    maven 打包 把第三方包也打进去
    wiki 配置数据源 编码要是utf8 不能是utf8mb4
    SCFT用公钥登录
    配置tomcat重启脚本
    tomcat
    centos7 搭建rabbitmq服务 3.7.15
    安装openoffice
    tomcat 日期切分
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/7015576.html
Copyright © 2011-2022 走看看