真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

leetcode5:最長回文子串

題目描述

Given a string s, find the longest palindromic substring in s.
You may assume that the maximum length of s is 1000.

創(chuàng)新互聯(lián)公司專注于高淳企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),成都做商城網(wǎng)站。高淳網(wǎng)站建設(shè)公司,為高淳等地區(qū)提供建站服務(wù)。全流程按需設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

Example 1:

Input: "babad"
Output: "bab"
Note: "aba" is also a valid answer.
Example 2:

Input: "cbbd"
Output: "bb"
# -*- coding: utf-8 -*-
# @Time         : 2019-10-11 10:34
# @Author       : Jayce Wong
# @ProjectName  : job
# @FileName     : longestPalindromicSubstring.py
# @Blog         : https://blog.51cto.com/jayce1111
# @Github       : https://github.com/SysuJayce

class Solution:
    """
    要查找最長的回文子串,這里可以把我們的思路換一下。
    原本我們判斷一個(gè)字符串是不是回文的時(shí)候,是從字符串的兩端開始往中間比較,
    而我們現(xiàn)在要找的是最長的回文子串,那么如果我們從中間開始往兩段比較,直到待比較的兩個(gè)字符不相等。

    通過不斷的將中心字符移動(dòng),這樣我們就可以找到最長的回文子串。
    需要注意的是,在我們判斷一個(gè)字符串的是不是回文的時(shí)候需要處理字符串個(gè)數(shù)的奇偶性
    同理,我們在移動(dòng)中心字符的時(shí)候,也要處理奇數(shù)字符長度的回文子串和偶數(shù)字符長度的回文子串。
    """
    def longestPalindrome(self, s):
        def helper(left, right):
            """
            判斷給定一個(gè)字符串的起止點(diǎn),最多能將其延長到多長。
            :param left: 起點(diǎn)
            :param right: 終點(diǎn)
            :return: 以left, right為起止點(diǎn)能延長到的最長回文字符串
            """
            # 只要下標(biāo)不越界并且兩端相等,就往外延伸
            while left >= 0 and right < len(s) and s[left] == s[right]:
                left -= 1
                right += 1
            # 當(dāng)不能再延伸的時(shí)候,返回當(dāng)前能得到的最長回文字符串
            return s[left + 1: right]

        ans = ''
        for i in range(len(s)):
            # 對(duì)于每一個(gè)中心,需要判斷奇數(shù)長度的回文子串和偶數(shù)長度的回文子串
            odd = helper(i, i)
            if len(odd) > len(ans):
                ans = odd
            even = helper(i, i + 1)
            if len(even) > len(ans):
                ans = even
        return ans

def main():
    solution = Solution()
    s = "babad"
    print(solution.longestPalindrome(s))

if __name__ == '__main__':
    main()

分享文章:leetcode5:最長回文子串
鏈接URL:http://weahome.cn/article/pgeoii.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部