zoukankan      html  css  js  c++  java
  • LeetCode OJ--Palindrome Partitioning **

    https://oj.leetcode.com/problems/palindrome-partitioning/

    给定一个字符串 s,求所有的子串组合,每个子串都是回文的。

    比如,aba: {a,b,a},{aba}

    对于这类问题(对一个串的划分)基本上就是用递归。

    首先设一个 record 数组,记录中间结果,省的多次计算。

    class Solution {
    public:
        vector<vector<string> > partition(string s) {
            vector<vector<string> > ans;
            if(s.empty())
                return ans;
            const size_t len = s.size();
    
            vector<vector<bool> > flag;
            flag.resize(len);
            for(int i = 0;i<len;i++)
                flag[i].resize(len);
    
            for(int i = 0;i<len;i++)
                for(int j = i;j<len;j++)
                {
                    flag[i][j] = isPal(s,i,j);
                }
    
            vector<string> ansPiece;
            sub(0,flag,ans,ansPiece,s);
            return ans;
        }
        void sub(int begin,vector<vector<bool> > &flag,vector<vector<string> > &ans,vector<string> &ansPiece,string &s)
        {
            if(begin == s.size())
            {
                vector<string> _ansPiece = ansPiece;
                ans.push_back(_ansPiece);
                return ;
            }

    //here i means end position
    for(int i = begin;i<flag.size();i++) { string tempstr; if(flag[begin][i]) { tempstr = s.substr(begin,i-begin+1); ansPiece.push_back(tempstr); sub(i+1,flag,ans,ansPiece,s); ansPiece.pop_back(); } } } bool isPal(string s,int i,int j) { if(i==j) return true; int temp = 0; while(i+temp<j-temp) { if(s[i+temp]!=s[j-temp]) return false; temp++; } return true; } };
  • 相关阅读:
    一、flink架构模型
    每日看点
    argparse模块用法实例
    Python 牛刀小试
    spark 编程基础
    我想过的100种暴富机会
    hadoop大数据架构
    centOS7 ip 配置
    classNotFound异常的一个原因
    linux上部署java项目
  • 原文地址:https://www.cnblogs.com/qingcheng/p/3823084.html
Copyright © 2011-2022 走看看