赞
踩
给定一个字符串 s ,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
示例:
输入: "aab"
输出:
[
["aa","b"],
["a","a","b"]
]
- import java.util.List;
- import java.util.ArrayList;
-
-
- class Solution {
-
- public static List<List<String>> solution(String tmp){
- if(null == tmp || tmp.length() == 0){
- return Collections.emptyList();
- }
-
- List<List<String>> result = new ArrayList<List<String>>();
- solution(result, tmp, 0, new ArrayList<String>());
-
- return result;
- }
-
- private static void solution(List<List<String>> result, String tmp, int index, List<String> list){
- if(index >= tmp.length()){
- result.add(new ArrayList<String>(list));
- return;
- }
-
- for(int i = index; i < tmp.length(); i++){
- if(isPlalindrome(tmp, index, i)){
- list.add(tmp.substring(index, i + 1));
- solution(result, tmp, i + 1, list);
- list.remove(list.size() - 1);
- }
- }
- }
-
- private static boolean isPlalindrome(String s, int begin, int end){
- while(begin < end){
- if(s.charAt(begin++) != s.charAt(end--)){
- return false;
- }
- }
-
- return true;
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。