LeetCode题解(1540):通过K次指定操作能否将字符串转换为指定字符串(Python)
发布日期:2021-06-29 19:58:49
浏览次数:3
分类:技术文章
本文共 1359 字,大约阅读时间需要 4 分钟。
题目:(中等)
标签:字符串、哈希表、贪心算法
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | O ( S + T ) O(S+T) O(S+T) | O ( 1 ) O(1) O(1) | 468ms (58.16%) |
Ans 2 (Python) | O ( S + T ) O(S+T) O(S+T) | O ( 1 ) O(1) O(1) | 364ms (84.43%) |
Ans 3 (Python) |
解法一:
class Solution: def canConvertString(self, s: str, t: str, k: int) -> bool: N1, N2 = len(s), len(t) # 处理特殊情况 if N1 != N2: return False # 统计k中可以处理各种切换数量的次数 a, b = divmod(k, 26) count = [a + 1] * b + [a] * (26 - b) # 统计将s变为t所需要的切换次数 for i in range(N1): if s[i] != t[i]: c1, c2 = ord(s[i]), ord(t[i]) diff = (c2 + 26 - c1) % 26 if count[diff - 1] > 0: count[diff - 1] -= 1 else: return False return True
解法二(优化解法一):
class Solution: def canConvertString(self, s: str, t: str, k: int) -> bool: N1, N2 = len(s), len(t) # 处理特殊情况 if N1 != N2: return False # 统计k中可以处理各种切换数量的次数 a, b = divmod(k, 26) count = [a + 1] * b + [a] * (26 - b) # 统计将s变为t所需要的切换次数 for s_ch, t_ch in zip(s, t): diff = (ord(t_ch) - ord(s_ch)) % 26 - 1 if diff >= 0: if count[diff] > 0: count[diff] -= 1 else: return False return True
转载地址:https://dataartist.blog.csdn.net/article/details/108354618 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月30日 21时45分45秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
IETF
2019-04-30
Auto2.0学习二--客户端的授权模式
2019-04-30
C#-TransactionScope
2019-04-30
OLTP/OLAP/HTAP学习一
2019-04-30
easyui.form
2019-04-30
酒店管理系统
2019-04-30
数据结构与算法学习一
2019-04-30
分布式学习一
2019-04-30
微服务学习十
2019-04-30
nginx负载均衡/反向代理学习一
2019-04-30
大数据学习一
2019-04-30
在线教育系统
2021-07-03
七大管理工具
2021-07-03
BPM学习
2021-07-03
项目管理的47个流程
2021-07-03
一张图遍历中外历史事件、科学发明、哲学思想对照表
2021-07-03
C# 利用VS自带的WSDL工具生成WebService服务类
2019-04-30
Devops学习一
2019-04-30
电商数据化管理
2019-04-30