LeetCode 5. Longest Palindromic Substring & 回文字符串
Longest Palindromic Substring
回文这种简单的问题,在C里面印象很深啊。希望能一次过。
写的时候才想到有两种情况:
454(奇数位)
4554(偶数位)
第1次提交
class Solution:
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
print(s)
maxPadStr=''
# traverse each char
l=len(s)
for i,c in enumerate(s):
# left or right extend test
# j is length
j=1
while j <= l/2:
# left or right str
leftStr=s[i:i-j:-1] if (i-j)>=0 else s[i::-1]
rightStr=s[i:i+j] # odd
rightStr2=s[i+1:i+j+1] # even
# length
leftLen=len(leftStr)
rightLen=len(rightStr)
print(i,j,'left:',leftStr,'right:',rightStr,'right-even:',rightStr2)
if leftLen != rightLen:
break
if leftStr == rightStr and len(leftStr)*2-1>=len(maxPadStr):
#odd bit
maxPadStr=(leftStr[:0:-1]+rightStr) # 654,654 -> 45654
#print('odd',maxPadStr)
# 'cbbd' 时,left: b right: b right-even: b. odd even 都存在,但上面只会b,所以存在偶数位相等故不能elif
if leftStr == rightStr2 and len(leftStr)*2>=len(maxPadStr):
#even bit
maxPadStr=(leftStr[::-1]+rightStr2) # 654,654 -> 456654
#print('even',maxPadStr)
j+=1
return maxPadStr
if __name__ == "__main__":
data = [
{
"input":"babad",
"output":"bab", # /'aba'
},{
"input":"cbbd",
"output":"bb"
},{
"input":"123456654",
"output":"456654"
},{
"input":"14565422",
"output":"45654"
}
];
for d in data:
result=Solution().longestPalindrome(d['input'])
print(result)
if result==d['output']:
print("--- ok ---")
else:
print("--- error ---")
Wrong Answer:
Input:
"a"
Output:
""
Expected:
"a"
咦,这种一个字母早都考虑到了啊。
出在了while的条件上:j <= l/2: 哈哈,一半长度的直观出发哈哈哈l/2,没错,只是把1个字符就排除掉了,改成这样j<=l//2+1。
第2次提交
pass
while j <= l//2+1:
pass
Accepted!
LeetCode 5. Longest Palindromic Substring & 回文字符串的更多相关文章
- Leetcode 5. Longest Palindromic Substring(最长回文子串, Manacher算法)
Leetcode 5. Longest Palindromic Substring(最长回文子串, Manacher算法) Given a string s, find the longest pal ...
- LeetCode(4) || Longest Palindromic Substring 与 Manacher 线性算法
LeetCode(4) || Longest Palindromic Substring 与 Manacher 线性算法 题记 本文是LeetCode题库的第五题,没想到做这些题的速度会这么慢,工作之 ...
- [LeetCode] 125. Valid Palindrome 验证回文字符串
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...
- leetcode:Longest Palindromic Substring(求最大的回文字符串)
Question:Given a string S, find the longest palindromic substring in S. You may assume that the maxi ...
- 求最长回文子串 - leetcode 5. Longest Palindromic Substring
写在前面:忍不住吐槽几句今天上海的天气,次奥,鞋子里都能养鱼了...裤子也全湿了,衣服也全湿了,关键是这天气还打空调,只能瑟瑟发抖祈祷不要感冒了.... 前后切了一百零几道leetcode的题(sol ...
- [LeetCode] 5. Longest Palindromic Substring 最长回文子串
Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...
- 最长回文子串-LeetCode 5 Longest Palindromic Substring
题目描述 Given a string S, find the longest palindromic substring in S. You may assume that the maximum ...
- leetcode 5 :Longest Palindromic Substring 找出最长回文子串
题目: Given a string S, find the longest palindromic substring in S. You may assume that the maximum l ...
- [leetcode]5. Longest Palindromic Substring最长回文子串
Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...
随机推荐
- Qt 中的事件处理(一)
1.图形界面应用程序的消息处理模型 特点: 基于操作系统才能运行 GUI应用程序提供的功能必须由用户触发 用户操作界面时操作系统是第一个感知的 系统内核的消息通过事件处理转变成QT的信号 2. Qt中 ...
- Feign 请求拦截器和日志
Feign 支持请求拦截器,在发送请求前,可以对发送的模板进行操作,例如设置请求头等属性,自定请求拦截器需要实现 feign.RequestInterceptor 接口,该接口的方法 apply 有参 ...
- 前端学PHP之面向对象系列第四篇-----关键字
public public表示公有,它具有最大的访问权限,被定义为公有的类成员可以在任何地方被访问 如果属性用 var 定义,则被视为公有,如果方法没有设置关键字,则该方法默认为公有 <?php ...
- 开IE时 暴卡
待打开IE后,在“工具”-“管理加载项”中禁用所有加载项.
- Flask-状态保持-CSRF
问题:cookies基于浏览器的同源策略,不同域名的cookie不能相互访问,为什么可以进行跨站请求伪造呢? 原因:cookie基于浏览器的同源策略,确实是在实现状态保持的时候,不能跨域访问. 跨站请 ...
- Linux Docker安装Jenkins
安装环境 操作系统 centos7.3 安装Docker,安装及配置见 <Docker之Docker介绍及安装配置> 安装Jenkins 下载Jenkins 命令:sudo docker ...
- 禁止光盘优盘自动播放(Shell Hardware Detection服务)
strComputer = "."Set objWMIService = GetObject("winmgmts:\\" & strComputer & ...
- S型顺序遍历二叉树(c++实现)
//1.s型顺序访问二叉树,默认先左后右:利用两个栈来实现:如果先右后左的话,改变一下入栈的顺序就行 //2.注意s1 s2插入栈的顺序是不同的 void S_LevelOrderPrint(Tree ...
- ssh调试及指定私钥
1.ssh调试 ssh -vT username@ip[or hostname] T表示测试,v显示详细信息 也可以配置config文件(在~/.ssh/config)指定用户名和密码 如 [gerr ...
- Qt QDateTime QTimer的简单实用
转载:N3verL4nd qttimer.h #ifndef QTTIMER_H #define QTTIMER_H #include <QDialog> namespace Ui { c ...