Palindrome Partitioning -- leetcode

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

将一个字符串,进行分段,每段都是一个回文。

列出所有的分法。

基本思路:

深度优先递归。

在剩余字符中,逐步偿试,找一个回文子串;若找到,则刨掉此回文后,在剩余的子符继续进行前面的操作。

若剩余字符为空,则找到一个组合。

判断一个字串是否是回文,用头尾两个指针,向中间移动。

在leetcode上实际执行时间为12ms。

class Solution {
public:
    vector<vector<string>> partition(string s) {
        vector<vector<string>> ans(1);
        dfs(ans, s, 0);
        ans.pop_back();
        return ans;
    }

    void dfs(vector<vector<string>> &ans, const string &s, int start) {
        if (start == s.size()) {
            ans.push_back(ans.back());
            return;
        }

        for (int i=start; i<s.size(); i++) {
            if (isPalindrome(s, start, i)) {
                ans.back().push_back(s.substr(start, i-start+1));
                dfs(ans, s, i+1);
                ans.back().pop_back();
            }
        }
    }

    bool isPalindrome(const string &s, int start, int end) {
        while (start <= end && s[start] == s[end]) {
            ++start;
            --end;
        }
        return start > end;
    }
};
时间: 2024-10-23 05:37:34

Palindrome Partitioning -- leetcode的相关文章

Palindrome Partitioning leetcode java

题目: 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",&

Palindrome Partitioning——LeetCode

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

Palindrome Partitioning[leetcode] DFS以及DP的解法

第一种方法是DFS,将所有可能的前缀找到,递归调用partition(剩余字符串) 复杂度为O(2^n) 代码如下: vector<vector<string>> partition(string s) { vector<vector<string>> res; vector<string> patition; if (s.size() == 0) return res; partition(s, patition, res); return r

[LeetCode]132.Palindrome Partitioning II

题目 Given a string s, partition s such that every substring of the partition is a palindrome. Return the minimum cuts needed for a palindrome partitioning of s. For example, given s = "aab", Return 1 since the palindrome partitioning ["aa&qu

[leetcode]Palindrome Partitioning @ Python

原题地址:https://oj.leetcode.com/problems/palindrome-partitioning/ 题意: 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 [

[LeetCode] Palindrome Partitioning II 解题笔记

Given a string s, partition s such that every substring of the partition is a palindrome. Return the minimum cuts needed for a palindrome partitioning of s. For example, given s = "aab",Return 1 since the palindrome partitioning ["aa",

leetcode之Palindrome Partitioning

方法一:DFS递归,判断每一个是否为回文数1,首先要有一个判断字符串是否是回文的函数.容易实现,字符串从两边同时往中间走,看字符是否相同; 2,深度优先搜索思想对字符串进行遍历.得到结果.例如,s = "abacd"; 需要对"a""ad""aba""abac""abacd"进行深度优先搜索.深度搜索的过程如下:先选"a",发现"a"是回文,则深度

LeetCode——Palindrome Partitioning

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

[LeetCode] Palindrome Partitioning II [12]

题目 Given a string s, partition s such that every substring of the partition is a palindrome. Return the minimum cuts needed for a palindrome partitioning of s. For example, given s = "aab", Return 1 since the palindrome partitioning ["aa&qu