博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lintcode:Palindrome Partitioning 分割回文串
阅读量:6835 次
发布时间:2019-06-26

本文共 1146 字,大约阅读时间需要 3 分钟。

题目:

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

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

样例

给出 s = "aab",返回

  [

    ["aa","b"],

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

  ]

解题:

这个题目不好搞啊,需要动态规划

,没有根据动态规划,也解决了,貌似是暴力解决

从下标pos开始,找到下标i使得 pos到i内是回文字符串,再从i+1开始,找到下一个回文串,这样一直找下去。。。

时间复杂度O(n2)

Java程序:

public class Solution {    /**     * @param s: A string     * @return: A list of lists of string     */    public ArrayList
> partition(String s) { // write your code here ArrayList
> result = new ArrayList
>(); if(s==null) return result; ArrayList
path = new ArrayList
(); helper(s,path,0,result); return result; } private boolean isPalindrome(String s){ int beg = 0; int end = s.length() - 1; while(beg
path,int pos,ArrayList
> result){ if(pos==s.length()){ result.add(new ArrayList
(path)); return; } for(int i=pos+1;i<=s.length();i++){ String prefix = s.substring(pos,i); if(!isPalindrome(prefix)) continue; path.add(prefix); helper(s,path,i,result); path.remove(path.size()-1); } }}
View Code

总耗时: 2017 ms

上面程序利用到的是深度优先遍历

DFS

(1) 判断是否结束

(2) for 循环取所有的子串

 2.1 判断是否是回文字符串

2.2 是加入,递归进行

2.3 不是,for循环下一位 
 

转载地址:http://whqkl.baihongyu.com/

你可能感兴趣的文章
你不可不知的家庭装修禁忌
查看>>
关于i++和++i
查看>>
如何处理win10系统内置Linux系统闪退问题
查看>>
在Ubuntu上通过命令行安装Elisa KDE音乐播放器
查看>>
CentOS下命令行和桌面模式的切换方法
查看>>
linux下socket编程
查看>>
android中解压文件
查看>>
如何进行大数据分析及处理?
查看>>
runtime运行时编程一些相关知识
查看>>
转基因和基因突变
查看>>
git 使用经验
查看>>
shell脚本参数"$10"问题
查看>>
GSM协议编号及其内容
查看>>
mac下的抓包工具Charles
查看>>
iOS 四种保存数据的方式!
查看>>
innodb和myisam
查看>>
内存数据库服务运营之路
查看>>
UIBubbleTableView
查看>>
UIMenuController的使用,对UILabel拷贝以及定制菜单
查看>>
docker配置国内镜像源
查看>>