zoukankan      html  css  js  c++  java
  • leetcode5

    public class Solution {
            private int lo, maxLen;
    
            public String LongestPalindrome(String s)
            {
                int len = s.Length;
                if (len < 2)
                    return s;
    
                for (int i = 0; i < len - 1; i++)
                {
                    extendPalindrome(s, i, i);  //assume odd length, try to extend Palindrome as possible
                    extendPalindrome(s, i, i + 1); //assume even length.
                }
                return s.Substring(lo, maxLen);
            }
    
            private void extendPalindrome(String s, int j, int k)
            {
                while (j >= 0 && k < s.Length && s[j] == s[k])
                {
                    j--;
                    k++;
                }
                if (maxLen < k - j - 1)
                {
                    lo = j + 1;
                    maxLen = k - j - 1;
                }
            }
    }

    https://leetcode.com/problems/longest-palindromic-substring/#/description

    补充一个python的实现,使用动态规划解决:

     1 class Solution:
     2     def longestPalindrome(self, s: 'str') -> 'str':
     3         n = len(s)
     4         dp = [[False for _ in range(n)]for _ in range(n)]
     5         count = 0
     6         res = ''
     7         for i in range(n):
     8             dp[i][i] = True
     9             if count < 1:
    10                 res = s[i]
    11                 count = 1
    12             
    13         for i in range(n-1):
    14             if s[i] == s[i+1]:
    15                 dp[i][i+1] = True
    16                 if count < 2:
    17                     res = s[i:i+2]
    18                     count = 2
    19         
    20         for k in range(3,n+1):
    21             for i in range(n-k+1):
    22                 j = i + k - 1
    23                 if s[i] == s[j] and dp[i+1][j-1]:
    24                     dp[i][j] = True
    25                     if count < j + 1 - i:
    26                         count = j + 1 -i
    27                         res = s[i:j+1]
    28         return res
  • 相关阅读:
    爬虫杂七杂八
    pycharm使用技巧
    python杂七杂八
    mysql杂七杂八
    mysql常见函数总结:
    CF1030F Putting Boxes Together
    AT2688 [ARC080C] Young Maids
    P5280 [ZJOI2019]线段树
    雨的味道
    P2572 [SCOI2010]序列操作
  • 原文地址:https://www.cnblogs.com/asenyang/p/6810231.html
Copyright © 2011-2022 走看看