zoukankan      html  css  js  c++  java
  • Palindrome Partitioning

    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.

    For example, given s = "aab",
    Return

      [
        ["aa","b"],
        ["a","a","b"]
      ]
    参考了这个锅锅的,思路很清晰,用的类似DFS递归实现http://www.sjsjw.com/kf_code/article/033776ABA018056.asp


     1 import java.util.ArrayList;
     2 import java.util.List;
     3 
     4 public class Solution {
     5     
     6     public List<List<String>> partition(String s) {
     7         List<List<String>> result = new ArrayList<List<String>>();            //存放结果
     8         List<String> curList = new ArrayList<String>();                        //记录当前结果
     9         
    10         if(s.length() == 0)
    11             return result;
    12         getResult(result, curList, s);
    13         
    14         return result;
    15     }
    16     
    17     /**
    18      * 判断字符串是否为回文
    19      * @param str
    20      * @return
    21      */
    22     public boolean isPalindrom(String str){
    23         for(int i = 0, j = str.length() - 1; i < j; i++, j--){
    24             if(str.charAt(i) != str.charAt(j))
    25                 return false;
    26         }
    27         
    28         return true;
    29     }
    30     
    31     /**
    32      * 递归调用
    33      * @param curList
    34      * @param str
    35      */
    36     public void getResult(List<List<String>> result,List<String> curList, String str){
    37         if(str.length() == 0)
    38             result.add(new ArrayList<String>(curList));                //满足条件添加到结果集中,注意这里因为curList是引用,必须new一个新的list出来
    39         else{
    40             for(int i = 1; i <= str.length();i++){
    41                 String head = str.substring(0, i);
    42                 if(isPalindrom(head)){                                //子串是回文
    43                     curList.add(head);
    44                     getResult(result, curList, str.substring(i));
    45                     curList.remove(curList.size() - 1);
    46                 }
    47             }
    48         }
    49     }
    50 //    public void show(List<List<String>> list){
    51 //        for(List<String> list_temp : list){
    52 //            for(String string_temp : list_temp){
    53 //                System.out.print(string_temp + " ");
    54 //            }
    55 //            System.out.println();
    56 //        }
    57 //    }
    58 }
  • 相关阅读:
    TCP/IP和HTTP协议代理
    HTTP与HTTPS的区别
    HTTP头HOST
    租户、租户管理员、部门管理员和开发者在APIGW中的角色
    HTTP协议扫盲(八 )响应报文之 Transfer-Encoding=chunked方式
    Java的Socket通信
    开发一个http代理服务器
    需求迭代:迭代需求矩阵
    产品功能对标
    GIT入门笔记(20)- 使用eclipse 基于 git 开发过程梳理
  • 原文地址:https://www.cnblogs.com/luckygxf/p/4183306.html
Copyright © 2011-2022 走看看