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 & 回文字符串的更多相关文章

  1. Leetcode 5. Longest Palindromic Substring(最长回文子串, Manacher算法)

    Leetcode 5. Longest Palindromic Substring(最长回文子串, Manacher算法) Given a string s, find the longest pal ...

  2. LeetCode(4) || Longest Palindromic Substring 与 Manacher 线性算法

    LeetCode(4) || Longest Palindromic Substring 与 Manacher 线性算法 题记 本文是LeetCode题库的第五题,没想到做这些题的速度会这么慢,工作之 ...

  3. [LeetCode] 125. Valid Palindrome 验证回文字符串

    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...

  4. leetcode:Longest Palindromic Substring(求最大的回文字符串)

    Question:Given a string S, find the longest palindromic substring in S. You may assume that the maxi ...

  5. 求最长回文子串 - leetcode 5. Longest Palindromic Substring

    写在前面:忍不住吐槽几句今天上海的天气,次奥,鞋子里都能养鱼了...裤子也全湿了,衣服也全湿了,关键是这天气还打空调,只能瑟瑟发抖祈祷不要感冒了.... 前后切了一百零几道leetcode的题(sol ...

  6. [LeetCode] 5. Longest Palindromic Substring 最长回文子串

    Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...

  7. 最长回文子串-LeetCode 5 Longest Palindromic Substring

    题目描述 Given a string S, find the longest palindromic substring in S. You may assume that the maximum ...

  8. leetcode 5 :Longest Palindromic Substring 找出最长回文子串

    题目: Given a string S, find the longest palindromic substring in S. You may assume that the maximum l ...

  9. [leetcode]5. Longest Palindromic Substring最长回文子串

    Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...

随机推荐

  1. MySQL程序之mysqldump详解

    mysqldump命令详解 mysqldump是mysql用于转存储数据库的实用程序.它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等 用法: ...

  2. HTML:meta标签使用总结 [转载] [360浏览器 指定极速模式]

    meta标签作用 META标签是HTML标记HEAD区的一个关键标签,提供文档字符集.使用语言.作者等基本信息,以及对关键词和网页等级的设定等,最大的作用是能够做搜索引擎优化(SEO). PS:便于搜 ...

  3. GPIO实验

    一.目标:点亮led 1.看原理图:怎样点亮led 2.怎样GPF4输出0/1 a.配置功能  输出/输入/其他功能(中断或者其他) b.设置输出高电平/低电平 操作寄存器--->看芯片手册 A ...

  4. Composer的学习

    来自http://blog.sina.com.cn/s/blog_6262a50e0101b5ut.html 简介 composer是PHP中的一个依赖关系管理工具.只要(按指定格式)声明项目所依赖的 ...

  5. vue项目中, 字段信息为空时不渲染,是真的不渲染吗

    代码 样式,宽度pro_proj 此class设置有宽度,考虑字数如果太多就进入下一行就没有设置高度 样式改为 数据 渲染. 开始以为,null时vue不渲染,然后审查元素,发现渲染的dom是存在的, ...

  6. SpringBoot使用redis缓存List

    一.概述 最近在做性能优化,之前有一个业务是这样实现的: 1.温度报警后第三方通讯管理机直接把报警信息保存到数据库: 2.我们在数据库中添加触发器,(BEFORE INSERT)根据这条报警信息处理业 ...

  7. 【jdk】使用wget下载jdk8

    因为在oracle官网下载jdk需要 如果直接在linux中使用 wget命令下载,实际下载是一个html文件,所以需要通过一下命令 wget --no-check-certificate --no- ...

  8. c语言中printf()函数中的参数计算顺序

    今天看到了一个关于printf()函数计算顺序的问题,首先看一个例子: #include<stdio.h> int main() { printf("%d---%d---%d&q ...

  9. vagrant在windows下的安装和配置

    记录一下安装和配置过程中的一些坑步骤一分别下载vagrant和VirtualBox,我这里下载的是vagrant_1.9.1.msi 和 VirtualBox-5.1.14-112924-Win.ex ...

  10. svn 被锁住 冲突 Can't revert without reverting children

    解决 执行以下命令 D:\development\work>svn rm –-keep-local D:\development\work\ohho\common\logic\backstage ...