Clo*_*ave 2 python string algorithm substring palindrome
我试图检查一个字符串是否包含任何长度 > 1 的子字符串,这是一个回文。(请注意,这与检查整个字符串是否为回文串不同。)我能够编写一个函数来查找偶数或奇数长度的回文子串;我已尽我所能对其进行优化,但我的代码超出了一些测试用例的时间限制。
如何改进算法以使其更快?
def findPalindrome(s):
ans = ""
for i in range(len(s)):
for k in range(2):
temp = str_parser(s, i, i + k)
if len(temp) > len(ans) and len(temp) > 1:
return 1
return 0
def str_parser(s, l, r):
while l >= 0 and r < len(s):
if s[r] == s[l] and len(s[l:r+1]) > 1:
return s[l:r+1]
else:
l -= 1
r += 1
return ''
Run Code Online (Sandbox Code Playgroud)
findPalindrome如果输入字符串包含回文,该函数返回 1,否则返回 0。
正如已经指出的,您所要做的就是检查是否存在长度为 2 或 3 的回文:
def findPalindrome(s):
return any(x==y for x,y in zip(s, s[1:])) or any(x==y for x,y in zip(s, s[2:]))
Run Code Online (Sandbox Code Playgroud)
或者更简洁:
return any(c in s[i+1:i+3] for i, c in enumerate(s))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
150 次 |
| 最近记录: |