leetcode--19. palindrome-partitioning

题目:
Given a string s, partition s such that every substring of the partition is a palindrome.
Return all possible palindrome partitioning of s.
给定字符串s,分区的每个子字符串都是回文。返回s的所有可能的回文分区。

For example, given s ="aab",
Return
[
["aa","b"],
["a","a","b"]
]

思路:
如果要求输出所有可能的解,往往都是要用深度优先搜索。如果是要求找出最优的解,或者解的数量,往往可以使用动态规划。

import java.util.*;
public class Solution {
    public ArrayList<ArrayList<String>> partition(String s) {
        ArrayList<ArrayList<String>> res = new ArrayList<>();
        help(res,new ArrayList<String>(),s);
        return res;
    }
    private void help(ArrayList<ArrayList<String>> res, ArrayList<String> temp, String s) {
        if(s.length() == 0){
            res.add(new ArrayList<>(temp));
            return;
        }
        for (int i = 1; i <= s.length(); i++) {
            String t = s.substring(0, i);
            if(t.equals(new StringBuffer(t).reverse().toString())){ // 判断是否是回文字符串
                temp.add(t);
                help(res,temp,s.substring(i));
                temp.remove(temp.size()-1);
            }
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容