LeetCode 131. Palindrome Partitioning

简介: 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。

v2-b08355d8c706d66778c47d098efcb1f6_1440w.jpg

Description



Given a string s, partition s such that every substring of the partition is a palindrome.


Return all possible palindrome partitioning of s.


Example:


Input: "aab"

Output:

[

["aa","b"],

["a","a","b"]

]


描述



给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。

返回 s 所有可能的分割方案。


示例:

输入: "aab"

输出:

[

["aa","b"],

["a","a","b"]

]


思路



  • 此题目使用深度优先搜索.
  • 我们找到一个回文字符后,在剩下的字符中继续寻找回文字符串,直到结束.


# -*- coding: utf-8 -*-
# @Author:             何睿
# @Create Date:        2019-01-06 17:49:23
# @Last Modified by:   何睿
# @Last Modified time: 2019-01-06 21:41:22
class Solution:
    def partition(self, s):
        """
        :type s: str
        :rtype: List[List[str]]
        """
        res = []
        self.dfs(res, [], s)
        return res
    def dfs(self, res, path, s):
        # 递归结束条件,当s为空则将path所有的字符添加到结果数组中
        if not s:
            res.append(path)
            return
        for i in range(1, len(s)+1):
            # 判断是否是回文字符串
            sub = s[0:i]
            if sub == sub[::-1]:
                # 如果当前的字符串是回文字符串,保存当前的字符串
                # 继续判断字符串中剩下的字符哪个地方能构成回文字符串
                self.dfs(res, path+[sub], s[i:])


源代码文件在这里.


目录
相关文章
|
存储
LeetCode 132. Palindrome Partitioning II
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。 返回符合要求的最少分割次数。
99 0
LeetCode 132. Palindrome Partitioning II
|
C++ 网络安全
[LeetCode] Palindrome Partitioning II
This link has two nice solutions, one updating from forth to back (posted by tqlong in the post) and the other updating from back to forth (posted by diego2 in the answer).
819 0
[LeetCode] Palindrome Partitioning
The problem has a nice structure that backtracking naturally fits in. The structure is, given a starting position idx, we search from idx till the end of the string s.
663 0
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
3月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
108 2