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. 最長回文子串
給定一個字符串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。
示例 1:
輸入: "babad"
輸出: "bab"
注意: "aba" 也是一個有效答案。
示例 2:
輸入: "cbbd"
輸出: "bb"
今天遇到最長回文這道題,說實話對我來說是有點難度,攻了兩次才攻下來,個人覺得很有紀念意義,寫下來記錄一下。
Solution1: Greedy方法
回文字符串, 是正讀反讀都一樣的字符串。比較直接的方法是在每個字符位置上向前和向后搜索找到回文字符串。其中,對于搜索時需要對奇數(shù)位和偶數(shù)位兩種形式進行探索,奇數(shù)位以當前位置的字符為中心;偶數(shù)位以當前位置和其相鄰一個位置的兩個字符為中心向兩邊拓展。
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
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
字符串
+關注
關注
1文章
596瀏覽量
23166 -
奇數(shù)
+關注
關注
0文章
3瀏覽量
1436 -
偶數(shù)
+關注
關注
0文章
5瀏覽量
1787
發(fā)布評論請先 登錄
相關推薦
熱點推薦
Linux Shell系列教程之Shell字符串用法
:position:length}在$string中, 從位置$position開始提取長度為$length的子串${string#substring}從變量$string的開頭, 刪除最短匹配
發(fā)表于 08-29 16:01
VC+MScomm32控件制作串口通訊工具分享!
string DWORD cSubKeys=0;// number of subkeys DWORD cbMaxSubKey;// longest subkey size DWORD cchMaxClass
發(fā)表于 09-11 04:37
c#字符串截取索引超出范圍
text=“aa0101738f3a02ea”我想兩個兩個的截取出來,buf【0】=aabuf【1】=01...........運行到 buf[n] = text.Substring(i*2, 2);總是有問題出現(xiàn)索引超出范圍。必須為非負值并小于集合大小。請問各位什么原因導致的,沒有超出范圍啊
發(fā)表于 03-13 04:35
鴻蒙手機計算器開發(fā)練習
").show();return;} else if(operators.contains(text.getText().substring(text.length()-1))) {new
發(fā)表于 06-01 15:38
【合宙Air551G雙頻定位開發(fā)板試用體驗】用ESP8266聯(lián)網(wǎng)作為服務端顯示坐標
;,N"); dongjing = incomingByte.substring(dongjing_x + 1, dongjing_x + 12); beiwei
發(fā)表于 03-30 01:58
【DFRobot Beetle ESP32-C3開發(fā)板試用體驗】車載導航天氣掛件?
; Serial.println(comdata); int ic=comdata.indexOf('*'); String tmp=comdata.substring(1,ic
發(fā)表于 07-04 14:53
為什么無法將長度為700的字符串發(fā)送到手機?
);request_fromApp += request_onWiFi.substring(untill1 + 2, untill2);request_fromApp += (","
發(fā)表于 02-23 06:11
使用Arduino SDK進行編碼并將代碼ESP8266和ESP32,代碼不工作是怎么回事?
;tO = WiFi.localIP().toString().length()+1;nodeFour = WiFi.localIP().toString().substring(froM, tO).c_str();
發(fā)表于 02-24 08:26
Arduino 1.8.5 IDE中使用ESP8266-07代碼奔潰的原因?怎么解決?
;battery") != -1){ val1 = req.substring(14, 19); val2 = req.substring(21, 26); val3 = req.substring(28
發(fā)表于 02-24 08:04
esp8266發(fā)送數(shù)據(jù)后MDNS停止響應的原因 ?
=") != -1){ Serial.print(req.substring(2,5)); Serial.println(req.substring(7,11));//Serial.println
發(fā)表于 02-28 08:42
Wifi需要很長時間才能連接怎么處理?
= file.readStringUntil(\\\'\\\\n\\\');
if(s.startsWith(\\\"ssid\\\")) {wifi_ssid=s.substring
發(fā)表于 05-15 07:51
把帶有外部按鈕的Sonoff Th16放在盒子里,可以訪問Wifimanager的門戶以輸入新密碼?
;];
switchOffMin = sr.substring(11,13).toInt()*60 + sr.substring(14,16).toInt();
switchOffMin
發(fā)表于 05-30 08:22
Longest Substring no Repeat Characters
首先對于查詢是否存在的操作我們選擇用dict來做(hash速度快), 對整個字符串進行遍歷 用dict字典中存儲已經訪問過的數(shù)據(jù). 對于未存在于dict中的元素直接添加key:value為s[i]:i; 當遇到已經存在的元素更新start的位置為dict[s[i]]的下一位, 因為dict中的值仍然保留start之前的數(shù)元素, 所以遇到的存在元素未必是有效的, 需要對start的更新值進行判斷start = max(start, dct[s[i]] + 1). 最后更字典和最大長度即可
如何使用JDK截斷一個字符串
目標。 使用JDK截斷一個字符串 Java提供了許多方便的方法來截斷一個 String 。讓我們來看看。 使用 String 的 substring() 方法 String 類有一個方便的方法,叫做
Longest Palindromic Substring
評論