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方法
回文字符串, 是正读反读都一样的字符串。比较直接的方法是在每个字符位置上向前和向后搜索找到回文字符串。其中,对于搜索时需要对奇数位和偶数位两种形式进行探索,奇数位以当前位置的字符为中心;偶数位以当前位置和其相邻一个位置的两个字符为中心向两边拓展。
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
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
字符串
+关注
关注
1文章
551浏览量
20126 -
奇数
+关注
关注
0文章
3浏览量
1343 -
偶数
+关注
关注
0文章
5浏览量
1677
发布评论请先 登录
相关推荐
Linux Shell系列教程之Shell字符串用法
:position:length}在$string中, 从位置$position开始提取长度为$length的子串${string#substring}从变量$string的开头, 删除最短匹配
发表于 08-29 16:01
VC+MScomm32控件制作串口通讯工具分享!
string DWORD cSubKeys=0;// number of subkeys DWORD cbMaxSubKey;// longest subkey size DWORD cchMaxClass
发表于 09-11 04:37
c#字符串截取索引超出范围
text=“aa0101738f3a02ea”我想两个两个的截取出来,buf【0】=aabuf【1】=01...........运行到 buf[n] = text.Substring(i*2, 2);总是有问题出现索引超出范围。必须为非负值并小于集合大小。请问各位什么原因导致的,没有超出范围啊
发表于 03-13 04:35
鸿蒙手机计算器开发练习
").show();return;} else if(operators.contains(text.getText().substring(text.length()-1))) {new
发表于 06-01 15:38
【合宙Air551G双频定位开发板试用体验】用ESP8266联网作为服务端显示坐标
;,N"); dongjing = incomingByte.substring(dongjing_x + 1, dongjing_x + 12); beiwei
发表于 03-30 01:58
【DFRobot Beetle ESP32-C3开发板试用体验】车载导航天气挂件?
; Serial.println(comdata); int ic=comdata.indexOf('*'); String tmp=comdata.substring(1,ic
发表于 07-04 14:53
为什么无法将长度为700的字符串发送到手机?
);request_fromApp += request_onWiFi.substring(untill1 + 2, untill2);request_fromApp += (","
发表于 02-23 06:11
使用Arduino SDK进行编码并将代码ESP8266和ESP32,代码不工作是怎么回事?
;tO = WiFi.localIP().toString().length()+1;nodeFour = WiFi.localIP().toString().substring(froM, tO).c_str();
发表于 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
发表于 02-24 08:04
esp8266发送数据后MDNS停止响应的原因 ?
=") != -1){ Serial.print(req.substring(2,5)); Serial.println(req.substring(7,11));//Serial.println
发表于 02-28 08:42
Wifi需要很长时间才能连接怎么处理?
= file.readStringUntil(\\\'\\\\n\\\');
if(s.startsWith(\\\"ssid\\\")) {wifi_ssid=s.substring
发表于 05-15 07:51
把带有外部按钮的Sonoff Th16放在盒子里,可以访问Wifimanager的门户以输入新密码?
;];
switchOffMin = sr.substring(11,13).toInt()*60 + sr.substring(14,16).toInt();
switchOffMin
发表于 05-30 08:22
Longest Substring no Repeat Characters
首先对于查询是否存在的操作我们选择用dict来做(hash速度快), 对整个字符串进行遍历 用dict字典中存储已经访问过的数据. 对于未存在于dict中的元素直接添加key:value为s[i]:i; 当遇到已经存在的元素更新start的位置为dict[s[i]]的下一位, 因为dict中的值仍然保留start之前的数元素, 所以遇到的存在元素未必是有效的, 需要对start的更新值进行判断start = max(start, dct[s[i]] + 1). 最后更字典和最大长度即可
如何使用JDK截断一个字符串
目标。 使用JDK截断一个字符串 Java提供了许多方便的方法来截断一个 String 。让我们来看看。 使用 String 的 substring() 方法 String 类有一个方便的方法,叫做
评论