其他题目---Manacher算法
来源:互联网 发布:网络主播黑名单查询 编辑:程序博客网 时间:2024/06/18 18:54
【题目】
给定一个字符串str,返回str中最长回文子串的长度。要求时间复杂度O(N)。
【进阶题目】
给定一个字符串str,想通过添加字符的方式使得str整体都变成回文字符串,但要求只能在str的末尾添加字符,请返回在str后面添加的最短字符串。要求时间复杂度O(n)。
【代码实现】
#python3.5#原问题def manacherString(string): res = [0 for i in range(len(string) * 2 + 1)] index = 0 for i in range(len(res)): if i & 1 == 0: res[i] = "#" else: res[i] = string[index] index += 1 return resdef maxLcpsLength(str1): if str1 == None or len(str1) == 0: return 0 mStr = manacherString(str1) help = [0 for i in range(len(mStr))] index = -1 right = -1 maxLen = 0 for i in range(len(mStr)): if right > i: help[i] = min(right - i, 2 * index - i) else: help[i] = 1 while i + help[i] < len(mStr) and i - help[i] > -1: if mStr[i+help[i]] == mStr[i-help[i]]: help[i] += 1 else: break if i + help[i] > right: right = i + help[i] index = i maxLen = max(maxLen, help[i]) return maxLen - 1#进阶题目def shortestEnd(str1): if str1 == None or len(str1) == 0: return 0 mStr = manacherString(str1) help = [0 for i in range(len(mStr))] index = -1 right = -1 maxLen = 0 maxContainsEnd = 0 for i in range(len(mStr)): if right > i: help[i] = min(right-i, help[2*index-i]) else: help[i] = 1 while i + help[i] < len(mStr) and i - help[i] > -1: if mStr[i+help[i]] == mStr[i-help[i]]: help[i] += 1 else: break if i + help[i] > right: right = i + help[i] index = i if right == len(mStr): maxContainsEnd = help[i] break res = [] for i in range(len(str1)-maxContainsEnd+1): res.append(str1[i]) return ''.join(res[::-1])
阅读全文
2 0
- 其他题目---Manacher算法
- 其他题目---蓄水池算法
- 其他题目---KMP算法
- Manacher算法
- Manacher算法
- Manacher算法
- Manacher算法
- Manacher 算法
- manacher算法
- manacher 算法
- Manacher算法
- manacher算法
- manacher算法
- manacher算法
- Manacher 算法
- Manacher算法
- manacher算法
- Manacher算法
- 流形学习——Isomap算法
- android 资源仓库
- NOIP2017滚粗记
- django middleware
- mysql重置密码报错/usr/local/mysql/bin/mysqld does not exist
- 其他题目---Manacher算法
- linux删除文件后未释放空间解决办法
- leetcode Integer Break 整数拆分
- 未找到路径“/BOX/BoxInfo/Index”的控制器或该控制器未实现 IController。
- Mybatis与Hibernate的区别
- Python基本数据结构总结
- 适配iPhone X Push过程中TabBar位置上移
- 美国证监会主席:ICO交易疑存在价格操控
- CBOE总裁:继期货产品之后,比特币ETF也将上市