zoukankan      html  css  js  c++  java
  • LeetCode刷题笔记-回溯法-分割回文串

    题目描述:

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

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

    示例:

    输入: "aab"
    输出:
    [
    ["aa","b"],
    ["a","a","b"]
    ]

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/palindrome-partitioning

    解题思路:

    1、显然回溯法:求所有可能结果&结果是个List<list<>>类型。

    2、此题与求所以子集很相似,知识每个自己都要判断一个是不是回文串。

    3、注意判断回溯函数使用huisu(int begin,int end,String target) 便于字串处理

    Java代码实现如下

     1 //回文字符判断
     2     public boolean isPalindrome(String s,int start,int end){
     3         while(start<end){
     4             if(s.charAt(start)!=s.charAt(end))
     5                 return false;
     6             start++;
     7             end--;
     8         }
     9         return true;
    10     }
    11 
    12     public List<List<String>> partition(String s) {
    13         //求出所有子集
    14         //判断是不是回文
    15         List<List<String>> result = new ArrayList<>();
    16         List<String> temp = new ArrayList<>();
    17         part(result,temp,s,0);
    18         return result;
    19     }
    20 
    21     public void part(List<List<String>> result,List<String> temp,String s,int begin){
    22         if (begin==s.length()){
    23             result.add(new ArrayList(temp));  //一定要先申请内存,否则添加的是一个引用,返回结果为空。
    24             return;  //处理完成一定要return!!!
    25         }
    26         for (int i=begin;i<s.length();i++){
    27             if (isPalindrome(s,begin,i)){
    28                 temp.add(s.substring(begin,i+1));
    29                 part(result,temp,s,i+1);
    30                 temp.remove(temp.size()-1);
    31             }
    34         }

       

  • 相关阅读:
    阿里云esc 安装 mysql8.0
    阿里云esc 登录时的相关提示
    C# web项目 log4net 使用
    MVC 全局异常捕获
    datetimepicker 基础使用/select2 基础使用
    C# 从登陆开始 MVC4+BOOTSTRAP
    Android如何导入语言资源
    Android自带邮件含中文的附件用HTML打开乱码问题的解决
    android 解决输入法遮挡输入框的问题
    repo代码简单解读
  • 原文地址:https://www.cnblogs.com/sqchao/p/11070140.html
Copyright © 2011-2022 走看看