zoukankan      html  css  js  c++  java
  • LeetCode--Longest Palindromic Substring

    有一个比较容易出错的点:反转求最长公共子序列,这是错误的想法

     1 class Solution {
     2 public:
     3     string longestPalindrome(string s) {
     4         int n = s.length();
     5         int longestS = 0;
     6         int maxlen = 1;
     7         bool table[1000][1000] = {false};
     8         int i,j,len;
     9         for(i = 0 ; i < n ; ++i)
    10         {
    11             table[i][i] = true;
    12         }
    13         
    14         for(i = 0 ; i < n-1; ++i)
    15         {
    16             if(s[i] == s[i+1])
    17             {
    18                 table[i][i+1] = true;
    19                 longestS = i;
    20                 maxlen = 2;
    21             }
    22         }
    23         for(len = 3 ; len <= n ; ++len)
    24         {
    25             for(i = 0 ; i < n-len+1 ; ++i)
    26             {
    27                 j = i+len-1;
    28                 if(s[i]==s[j] && table[i+1][j-1])
    29                 {
    30                     table[i][j] = true;
    31                     longestS = i;
    32                     maxlen = len;
    33                 }
    34             }
    35         }
    36         return s.substr(longestS,maxlen);
    37     }
    38 };

    可以优化的,优化为O(1)的空间。就是考虑2*n-1个位置为中间点,然后开始求。

  • 相关阅读:
    视图类
    基于前一天再补充
    多表与基表等概念
    模块与序列化
    vue简单实现购物车列表功能
    再顾vue
    再探vue
    iptables编辑
    python 字符串替换、正则查找替换
    Map的遍历
  • 原文地址:https://www.cnblogs.com/cane/p/3884799.html
Copyright © 2011-2022 走看看