LeetCode题解(1542):找出最长的可通过字符交换转变为回文串的子字符串(Python)
发布日期:2021-06-29 19:58:53
浏览次数:2
分类:技术文章
本文共 1587 字,大约阅读时间需要 5 分钟。
题目:(困难)
标签:字符串、哈希表、位运算
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | O ( N ) O(N) O(N) | O ( N ) O(N) O(N) | 1908ms (35.27%) |
Ans 2 (Python) | O ( N ) O(N) O(N) | O ( N ) O(N) O(N) | 320ms (97.10%) |
Ans 3 (Python) |
解法一(哈希表):
class Solution: def longestAwesome(self, s: str) -> int: ans = 0 now = 0 # 当前各个数字的奇偶状态 hashmap = { now: 0} # 每个奇偶状态的最早出现坐标 for i, ch in enumerate(s): # 计算当前数字添加后奇偶状态的变化 now ^= 1 << int(ch) if now not in hashmap: hashmap[now] = i + 1 # 计算当前奇偶状态构成回文串的最早坐标 if now in hashmap: ans = max(ans, i - hashmap[now] + 1) for j in range(10): tmp = now ^ (1 << j) if tmp in hashmap: ans = max(ans, i - hashmap[tmp] + 1) # print(i, "[", ch, "]", bin(now)[2:], "->", ans) return ans
解法二(优化解法一):
class Solution: def longestAwesome(self, s: str) -> int: status = 0 # 当前各个数字的奇偶状态 hashmap = { status: [0, 0]} # 每个奇偶状态的最早出现坐标 for i, ch in enumerate(s): # 计算当前数字添加后奇偶状态的变化 status ^= 1 << int(ch) if status not in hashmap: hashmap[status] = [i + 1, i + 1] else: hashmap[status][1] = i + 1 # 计算当前奇偶状态构成回文串的最早坐标 ans = 1 for status in hashmap: ans = max(ans, hashmap[status][1] - hashmap[status][0]) for j in range(10): if (tmp := status ^ (1 << j)) in hashmap: ans = max(ans, hashmap[status][1] - hashmap[tmp][0]) return ans
转载地址:https://dataartist.blog.csdn.net/article/details/108357067 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月14日 21时02分32秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
写在前面的话
2021-07-03
数据结构学习_树(1)
2021-07-03
数据结构学习_树(2)
2021-07-03
数据结构学习_树(3)
2021-07-03
数据结构学习_树(4)
2021-07-03
数组与矩阵(1)_矩阵相乘
2021-07-03
数据结构学习_图(1)深度优先搜索、广度优先搜索和最小生成树
2021-07-03
数据结构学习_图(1)拓扑排序
2021-07-03
利用Strategy模式方便的增加新定义的操作
2021-07-03
command模式(c 语言实现)
2021-07-03
state 模式(c++ 实现)
2021-07-03
打印图形
2021-07-03
新的开始
2021-07-03
dos下常用网络命令
2021-07-03
powerpc汇编指令分析
2021-07-03
欢迎使用CSDN-markdown编辑器
2021-07-03
文章标题
2021-07-03
算法-动态规划
2021-07-03
算法-3个水桶8升水
2021-07-03
算法-稳定匹配
2021-07-03