zoukankan      html  css  js  c++  java
  • 131. Palindrome Partitioning

    Problem statement:

    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"]]

    Solution:
    This problem returns all possible palindrome partitions. Obviously, it is DFS.

    class Solution {
    public:
        vector<vector<string>> partition(string s) {
            vector<vector<string>> partition_set; 
            vector<string> partition;
            partition_dfs(partition_set, partition, s, 0);
            return partition_set;
        }
    private:
        void partition_dfs(vector<vector<string>>& partition_set, vector<string>& partition, string& s, int start){
            if(start == s.size()){
                partition_set.push_back(partition);
                return;
            }
            for(int i = start + 1; i <= s.size(); i++){
                string str = s.substr(start, i - start);
                if(is_parlindrome(str)){
                    partition.push_back(str);
                    partition_dfs(partition_set, partition, s, i);
                    partition.pop_back();
                }
            }
            return;
        }
        bool is_parlindrome(string s){
            int left = 0; 
            int right = s.size() - 1;
            while(left < right){
                if(s[left] != s[right]){
                    return false;
                }
                left++;
                right--;
            }
            return true;
        }
    };
  • 相关阅读:
    C语言运算符
    C语言的scanf函数
    C语言的数据、常量和变量
    js 操作样式属性
    点击图片显示或隐藏密码案例
    js 操作元素
    DOM 获取元素
    js 字符串对象
    js 数组
    js 倒计时 案例
  • 原文地址:https://www.cnblogs.com/wdw828/p/6834662.html
Copyright © 2011-2022 走看看