[leetcode] 5.Longest Palindromic Substring-1
开始觉得挺简单的 写完发现这个时间超限了:
class Solution:
def longestPalindrome(self, s: str) -> str:
# longest palindromic substring lenth < 1000
#NULL
string = s
if len(string) == 0:
return ''
# ---
# regular
# a not empty string must have 1 letterd palindromic substring:string[0]
longestPalindSubStringLength = 1
longestPalindSubString = string[0]
for start in range(len(string)):
for end in range(start + 1, len(string) +1): #[] operator is right open interval,will not count "end" if no +1
# one letter
if len(string[start:end]) == 1:
continue
if (self.isPalind(string[start:end])):
if len(string[start:end]) > longestPalindSubStringLength:# > will get bab ;>= will get aba. I prefer simple one
longestPalindSubStringLength = len(string[start:end])
longestPalindSubString = string[start:end]
return longestPalindSubString def isPalind(self, substring: str) -> bool:
#notice substring >= 2
substringlength = len(substring) looplimit = substringlength // 2
for index in range(0, looplimit):
if substring[index] != substring[substringlength-1 -index]: # axisymmetric
return False
else:
pass
# run to here without return mean palindromic
return True
"abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababa"
用pycharm跑了下 要4秒,结果就是它自己。[testcase:85]
发现之前判断轴对称的方法太低级了 不用逐位判断 轴对称的前一半和后一半的逆序是同一字符串即可。
class Solution:
def longestPalindrome(self, s: str) -> str:
# longest palindromic substring lenth < 1000
#NULL
string = s
if len(string) == 0:
return ''
# ---
# regular
# a not empty string must have 1 letterd palindromic substring:string[0]
longestPalindSubStringLength = 1
longestPalindSubString = string[0]
for start in range(len(string)):
for end in range(start + 1, len(string) +1): #[] operator is right open interval,will not count "end" if no +1
# one letter
if len(string[start:end]) == 1:
continue
if (self.isPalind(string[start:end])):
if len(string[start:end]) > longestPalindSubStringLength: #> mean bab;>= mean aba
longestPalindSubStringLength = len(string[start:end])
longestPalindSubString = string[start:end]
return longestPalindSubString def isPalind(self, substring: str) -> bool:
#notice substring >= 2
substringlength = len(substring) if(substringlength %2) == 1:
#odd
temp1 = substring[0:substringlength // 2 +1]
temp2 = substring[substringlength:substringlength // 2 - 1:-1]
if temp1 == temp2:
return True
else:
return False
else:
#even
temp1 = substring[0:substringlength//2]
temp2 = substring[substringlength:substringlength//2 -1:-1]
if temp1 == temp2:
return True
else:
return False
testcase:95
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg"
f比g多一个
testcase:98
def longestPalindrome(self, s: str) -> str:
# longest palindromic substring lenth < 1000
# NULL
if len(s) == 0:
return ''
# ---
# regular
# a not empty string must have 1 letterd palindromic substring:string[0]
longestPalindSubStringLength = 1
longestPalindSubString = s[0]
for start in range(len(s)):
for end in range(start + 1, len(s) + 1): # [] operator is right open interval,will not count "end" if no +1
# left to right for end in range(start + 1, len(s) + 1)
#from right to left range(length -1,-)
# one letter
if len(s[start:end]) == 1 or len(s[start:end]) <= longestPalindSubStringLength:
continue
if (self.isPalind(s[start:end])):
if len(s[start:end]) > longestPalindSubStringLength:
longestPalindSubStringLength = len(s[start:end])
longestPalindSubString = s[start:end]
return longestPalindSubString def isPalind(self, substring: str) -> bool:
# notice substring >= 2
substringlength = len(substring) if (substringlength % 2) == 1:
# odd
temp1 = substring[0:substringlength // 2 + 1]
temp2 = substring[substringlength:substringlength // 2 - 1:-1]
if temp1 == temp2:
return True
else:
return False
else:
# even
temp1 = substring[0:substringlength // 2]
temp2 = substring[substringlength:substringlength // 2 - 1:-1]
if temp1 == temp2:
return True
else:
return False
单个testcase耗时从500ms降到了200ms 但是总是到100/108的时候报TLE,换方法,下篇再说。
[leetcode] 5.Longest Palindromic Substring-1的更多相关文章
- LeetCode(4) || Longest Palindromic Substring 与 Manacher 线性算法
LeetCode(4) || Longest Palindromic Substring 与 Manacher 线性算法 题记 本文是LeetCode题库的第五题,没想到做这些题的速度会这么慢,工作之 ...
- Leetcode 5. Longest Palindromic Substring(最长回文子串, Manacher算法)
Leetcode 5. Longest Palindromic Substring(最长回文子串, Manacher算法) Given a string s, find the longest pal ...
- 求最长回文子串 - leetcode 5. Longest Palindromic Substring
写在前面:忍不住吐槽几句今天上海的天气,次奥,鞋子里都能养鱼了...裤子也全湿了,衣服也全湿了,关键是这天气还打空调,只能瑟瑟发抖祈祷不要感冒了.... 前后切了一百零几道leetcode的题(sol ...
- LeetCode 5 Longest Palindromic Substring(最长子序列)
题目来源:https://leetcode.com/problems/longest-palindromic-substring/ Given a string S, find the longest ...
- 【JAVA、C++】LeetCode 005 Longest Palindromic Substring
Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...
- leetcode:Longest Palindromic Substring(求最大的回文字符串)
Question:Given a string S, find the longest palindromic substring in S. You may assume that the maxi ...
- [LeetCode][Python]Longest Palindromic Substring
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com'https://oj.leetcode.com/problems/longest ...
- 【LeetCode】Longest Palindromic Substring 解题报告
DP.KMP什么的都太高大上了.自己想了个朴素的遍历方法. [题目] Given a string S, find the longest palindromic substring in S. Yo ...
- [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 ...
随机推荐
- HTML5支持服务器发送事件(Server-Sent Events)-单向消息传递数据推送(C#示例)
传统的WEB应用程序通信时的简单时序图: 现在Web App中,大都有Ajax,是这样子: HTML5有一个Server-Sent Events(SSE)功能,允许服务端推送数据到客户端.(通常叫数据 ...
- [C#] C# 与 Nessus 交互,动态构建扫描任务计划
C# 与 Nessus 交互,动态构建扫描任务计划 目录 什么是 Nessus? 创建会话类 NessusSession 登录测试 创建操作类 NessusManager 操作测试 什么是 Nessu ...
- linux服务器运维管理学习
一. 了解linux 1.Linux操作系统是基于UNIX操作系统发展而来的一种克隆系统,它诞生于1991 年的 [Linux桌面] 10 月5 日(这是第一次正式向外公布的时间).以后借助于Inte ...
- Yii2设计模式——单例模式
应用举例 在Yii.php中: require __DIR__ . '/BaseYii.php'; // Yii框架的帮助类,提供框架基本的功能 class Yii extends \yii\Base ...
- 05 入门 - 浅谈 ASP.NET MVC程序的工作原理
目录索引:<ASP.NET MVC 5 高级编程>学习笔记 本篇内容 1. Global.asax文件 2. RouteConfig.cs文件 3. 视图命名和寻址的规则 前面创建了一个简 ...
- css选择器概述
css选择器种类 id选择器 类选择器.属性选择器.伪类选择器 元素选择器.伪元素选择器 通配符选择器.子类选择器.后代选择器.相邻兄弟选择器.选择器分组 一.id选择器 <p id=" ...
- 适合精致女孩使用的APP软件 不容错过的精彩人生
阳光下灿烂,风雨中奔跑,每个人都会遇见美丽的缘分,或深或浅,或浓或淡.所以人生不管遇到什么难题,都要勇往直前.今天分享的软件也是十分精彩的,非常适合精彩的你哦! 薄荷健康 薄荷健康APP是专为想要减肥 ...
- Mybatis学习---连接MySQL数据库
[目录]
- MATLAB中“fitgmdist”的用法及其GMM聚类算法
MATLAB中“fitgmdist”的用法及其GMM聚类算法 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 高斯混合模型的基本原理:聚类——GMM,MA ...
- Java基础系列--02_运算符和程序的语句
运算符: (1)算术运算符: +,-,*,/,%,++,--(加.减.乘.除.取余.自增,自减) ++和--的注意事项: a:他们的作用是自增或者自减 b:使用 1.单独使用 放在操作数据的前面和后面 ...