[LeetCode][Java] Palindrome Partitioning
2015-07-31 22:24
387 查看
题目:
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"] ]
题意:
给定一个字符串 s ,划分这个字符串,使得每个划分都是回文串。返回 s 的所有的回文串划分。
比如,给定 s =
"aab",
返回
[ ["aa","b"], ["a","a","b"] ]
算法分析:
回溯递归,思路比较明确,看代码比较好理解。AC代码:
<span style="font-family:Microsoft YaHei;font-size:12px;">public class Solution { public ArrayList<ArrayList<String>> partition(String s) { ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>(); ArrayList<String> tmp = new ArrayList<String>(); getRs(list, tmp, s); return list; } public void getRs(ArrayList<ArrayList<String>> list,ArrayList<String> tmp,String s) { if(s.length()==0||s==null) { list.add(new ArrayList<String>(tmp)); return; } else { for(int i = 1;i<=s.length();i++) { if(isPalindrome(s.substring(0, i)))//该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符 { tmp.add(s.substring(0, i)); getRs(list, tmp, s.substring(i));//该子字符串从指定索引处的字符开始,直到此字符串末尾。 tmp.remove(tmp.size()-1); } } } } //判断一个字符串是否是回文 public boolean isPalindrome(String s) { if(s==null||s.length()==0) return true; for(int i = 0,j = s.length()-1;i<j;i++,j--) { if(s.charAt(i)!=s.charAt(j)) return false; } return true; } }</span>
相关文章推荐
- 计蒜客ACM 最大子阵列 java
- Struts2中Action返回Json串
- 双击eclipse后没反应
- spring+hibernate注解配置实例
- <Java>RandomAccessFile在文件中定位写入
- 关于Java socket读取阻塞解决方法20150731-刘海伦
- Java面向对象的三大特征及学习心得
- Java 8新特性探究(八)精简的JRE详解
- 解决Eclipse,MyEclipse出现An error has occurred,See error log for more details的错误
- struts+spring+hibernate==MVC完全解耦
- java.容器
- 学习hibernate遇到的问题1
- spring,hibernate,struts整合
- SpringMvc+Spring+Mybatis 环境集成
- eclipse hadoop远程调试
- 我是菜鸟:java内存及内存溢出异常
- Spring--quartz中cronExpression配置说明
- [转]基于全注解的Spring3.1 mvc、myBatis3.1、Mysql的轻量级项目
- EJB(企业级JavaBean)之Session Bean
- java concurrent并发详解