zoukankan      html  css  js  c++  java
  • Leet Palindrome Partitioning II

     1 class Solution {
     2 public:
     3     int minCut(string s) {
     4         int len = s.length();
     5         int*  p_dp = new int[len + 1];
     6         char* s_dp = new char[len * len];
     7         int*  mm = new int[len + 1];
     8         mm[0] = 0;
     9         memset(s_dp, -1, len * len);
    10         memset(p_dp, 0, (len + 1) * sizeof(int));
    11 
    12         int ret;
    13         for (int i=1; i<=len; i++) {
    14             int sub_len = i;
    15             int minc = INT_MAX;
    16 
    17             for (int j=0; j<=i-1; j++, sub_len--) {
    18 
    19                 char* p_is = &s_dp[j * len + i-1];
    20                 char b = 0;
    21                 if (sub_len >= 3 && -1 != (b = s_dp[(j+1) * len + i - 2])) {
    22                     *p_is = b && (s[j] == s[j + sub_len - 1]);
    23                 }
    24                 if (*p_is == -1) {
    25                     int p = j, q = j + sub_len - 1;
    26                     for (; p < q && s[p] == s[q]; p++, q--);
    27                     *p_is = (p < q) ? 0 : 1;
    28                 }
    29                 if (*p_is == 0) continue;
    30                 if (p_dp[j] < minc) minc = p_dp[j];
    31                 if (minc == mm[j]) break;
    32             }
    33             p_dp [i] = minc + 1;
    34             mm[i] = p_dp[i];
    35             for (int k = i-1; k >=0 && mm[k]>mm[k+1]; k--) {
    36                 mm[k] = mm[k+1];
    37             }
    38         }
    39         ret = p_dp[len];
    40         delete[] mm;
    41         delete[] p_dp;
    42         delete[] s_dp;
    43         return ret - 1;
    44     }
    45 };

    原来想着既然前一题中已经想到了类似dp的方法,这一题应该更简单才是,不过。。。不过。。。没有对判断回文着过过程进行优化,一直TLE,把它考虑掉后就可以过了,这里把求字符串是否为回文的过程和求最小分割的过程合并了,并且考虑在不可能有更小分割的情况下快速进入下一个循环过程,悲剧的一天。

  • 相关阅读:
    C#开发微信门户及应用(6)--微信门户菜单的管理操作
    C#开发微信门户及应用(5)--用户分组信息管理
    Django
    Django
    Django
    Django
    Django
    Django
    6.1
    Django
  • 原文地址:https://www.cnblogs.com/lailailai/p/3627425.html
Copyright © 2011-2022 走看看