博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【LeetCode】Palindrome Partitioning 解题报告
阅读量:4639 次
发布时间:2019-06-09

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

【题目】

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"]  ]
【回溯】

public class Solution {    public ArrayList
> partition(String s) { ArrayList
> result = new ArrayList
>(); ArrayList
list = new ArrayList
(); if (s == null || s.length() == 0) return result; calResult(result,list,s); return result; } /** * 推断一个字符串是否是回文字符串 */ private boolean isPalindrome(String str){ int i = 0; int j = str.length() - 1; while (i < j){ if (str.charAt(i) != str.charAt(j)){ return false; } i++; j--; } return true; } /** * 回溯 * @param result : 终于要的结果集 ArrayList
> * @param list : 当前已经增加的集合 ArrayList
* @param str : 当前要处理的字符串 */ private void calResult(ArrayList
> result , ArrayList
list , String str) { //当处理到传入的字符串长度等于0,则这个集合list满足条件,增加到结果集中 if (str.length() == 0) result.add(new ArrayList
(list)); int len = str.length(); //递归调用 //字符串由前往后,先推断str.substring(0, i)是否是回文字符串 //假设是的话,继续调用函数calResult,把str.substring(i)字符串传入做处理 for (int i=1; i<=len; ++i){ String subStr = str.substring(0, i); if (isPalindrome(subStr)){ list.add(subStr); String restSubStr = str.substring(i); calResult(result,list,restSubStr); list.remove(list.size()-1); } } }}

转载于:https://www.cnblogs.com/blfbuaa/p/6913823.html

你可能感兴趣的文章
sqlserver 分页查询总结
查看>>
多台centos服务器同步更新代码文件
查看>>
关于用户管理的思考
查看>>
小试牛刀【龙哥翻译】
查看>>
利用python重启路由器
查看>>
oracle 闪回操作(flashback)
查看>>
简单的jsonp实现跨域原理
查看>>
setvlet基础知识
查看>>
Css动画形式弹出遮罩层,内容区上下左右居中于不定宽高的容器中
查看>>
延迟加载、分页显示等功能的增加
查看>>
在Objective-C中浅谈面向对象
查看>>
解决vs2013不能添加控制器的步骤
查看>>
JAVA基础-数组
查看>>
【区间DP】能量项链
查看>>
trove 开发者阅读翻译
查看>>
WinForm 弹框确认后执行
查看>>
CRM Home Grid StyleSet
查看>>
遍历checktree 选中的节点,就是前面打勾的
查看>>
基于TCP/IP的长连接和短连接
查看>>
SharePoint Framework解决方案管理参考(二)
查看>>