Description:
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example 1:
Input: "babad"
Output: "bab"
Note: "aba" is also a valid answer.
Example 2:
Input: "cbbd"
Output: "bb"
5. 最長(zhǎng)回文子串
給定一個(gè)字符串 s,找到 s 中最長(zhǎng)的回文子串。你可以假設(shè) s 的最大長(zhǎng)度為 1000。
示例 1:
輸入: "babad"
輸出: "bab"
注意: "aba" 也是一個(gè)有效答案。
示例 2:
輸入: "cbbd"
輸出: "bb"
今天遇到最長(zhǎng)回文這道題,說(shuō)實(shí)話對(duì)我來(lái)說(shuō)是有點(diǎn)難度,攻了兩次才攻下來(lái),個(gè)人覺(jué)得很有紀(jì)念意義,寫下來(lái)記錄一下。
Solution1: Greedy方法
回文字符串, 是正讀反讀都一樣的字符串。比較直接的方法是在每個(gè)字符位置上向前和向后搜索找到回文字符串。其中,對(duì)于搜索時(shí)需要對(duì)奇數(shù)位和偶數(shù)位兩種形式進(jìn)行探索,奇數(shù)位以當(dāng)前位置的字符為中心;偶數(shù)位以當(dāng)前位置和其相鄰一個(gè)位置的兩個(gè)字符為中心向兩邊拓展。
class Solution:
def check_Palindrome(self,s,left,right):
res =''
while(left>=0 and right <len(s) and s[left] == s[right]):
if len(res) < len(s[left:right+1]):
res = s[left:right+1]
left -= 1
right += 1
return res
def longestPalindrome(self, s: str) -> str:
l =len(s)
res = ''
for i in range(l):
left = self.check_Palindrome(s,i,i)
right = self.check_Palindrome(s,i,i+1)
maxStr = None
if(len(left)>len(right)):
maxStr = left
else:
maxStr = right
if(len(maxStr) > len(res)):
res = maxStr
return res
-
字符串
+關(guān)注
關(guān)注
1文章
589瀏覽量
21006 -
奇數(shù)
+關(guān)注
關(guān)注
0文章
3瀏覽量
1387 -
偶數(shù)
+關(guān)注
關(guān)注
0文章
5瀏覽量
1757
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
Linux Shell系列教程之Shell字符串用法
VC+MScomm32控件制作串口通訊工具分享!
c#字符串截取索引超出范圍
鴻蒙手機(jī)計(jì)算器開發(fā)練習(xí)
【合宙Air551G雙頻定位開發(fā)板試用體驗(yàn)】用ESP8266聯(lián)網(wǎng)作為服務(wù)端顯示坐標(biāo)
【DFRobot Beetle ESP32-C3開發(fā)板試用體驗(yàn)】車載導(dǎo)航天氣掛件?
為什么無(wú)法將長(zhǎng)度為700的字符串發(fā)送到手機(jī)?
使用Arduino SDK進(jìn)行編碼并將代碼ESP8266和ESP32,代碼不工作是怎么回事?
Arduino 1.8.5 IDE中使用ESP8266-07代碼奔潰的原因?怎么解決?
esp8266發(fā)送數(shù)據(jù)后MDNS停止響應(yīng)的原因 ?
Wifi需要很長(zhǎng)時(shí)間才能連接怎么處理?
把帶有外部按鈕的Sonoff Th16放在盒子里,可以訪問(wèn)Wifimanager的門戶以輸入新密碼?
C語(yǔ)言算法分析:求最長(zhǎng)的遞增數(shù)列

評(píng)論