• 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"]
      ]

    采用DP来做。为了不重复计算palindrome, 使用一个map 存储从[i,j]是否为palindrome, 是为1, 不是为-1,没有测试过为0.

     1 public class Solution {
     2     ArrayList<ArrayList<String>> result = null;
     3     int[][] map = null;
     4     public ArrayList<ArrayList<String>> partition(String s) {
     5         // IMPORTANT: Please reset any member data you declared, as
     6         // the same Solution instance will be reused for each test case.
     7         result = new ArrayList<ArrayList<String>>();
     8         map = new int[s.length()][s.length()]; 
     9         getPartition(s, 0, new ArrayList<String>());
    10         return result;
    11     }
    12     public void getPartition(String s, int pos, ArrayList<String> row){
    13         if(pos == s.length()) result.add(row);
    14         for(int i = pos; i < s.length(); i ++){
    15             if(map[pos][i] == 0){
    16                 if(checkPartition(s, pos, i)) map[pos][i] = 1;
    17                 else map[pos][i] = -1;
    18             }
    19             if(map[pos][i] == 1){
    20                 row.add(s.substring(pos, i + 1));
    21                 getPartition(s, i + 1, new ArrayList<String>(row));
    22                 row.remove(row.size() - 1);
    23             }
    24         }
    25     }
    26     
    27     public boolean checkPartition(String s, int start, int end){
    28         for(int i = 0; i < (end - start + 1) / 2; i ++){
    29             if(s.charAt(start + i) != s.charAt(end - i)) return false;
    30         }
    31         return true;
    32     }
    33 }
  • 相关阅读:
    前端H5
    nginx的location的匹配规则
    非旺玖原装的PL2303,请联系您的供货商
    Arduino 怎样添加第三方拓展
    Arduino的shiftOut函数作用
    arduino 的analogRead() 和analogWrite()
    composer安装TP的时候:错误提示:zsh: no matches found: 5.1.*
    Bootstrap3 模态框点击无效
    人人商城支付成功后在哪修改订单状态
    人人商城怎样判断订单是否支付
  • 原文地址:https://www.cnblogs.com/reynold-lei/p/3442591.html
Copyright © 2020-2023  润新知