LeetCode题解(0564):寻找与当前数差值最小的回文数(Python)
发布日期:2021-06-29 19:57:59
浏览次数:2
分类:技术文章
本文共 1092 字,大约阅读时间需要 3 分钟。
题目:(困难)
标签:字符串、数学
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | O ( L ) O(L) O(L) : 其中L为字符串长度 | O ( L ) O(L) O(L) : 其中L为字符串长度 | 32ms (96.69%) |
Ans 2 (Python) | |||
Ans 3 (Python) |
LeetCode的Python执行用时随缘,只要时间复杂度没有明显差异,执行用时一般都在同一个量级,仅作参考意义。
解法一:
class Solution: def nearestPalindromic(self, n: str) -> str: # 处理特殊情况 if n == "1": return "0" # 计算字符串中分隔位置的坐标 idx_1 = (len(n) + 1) // 2 # 包含中间位置的坐标 idx_2 = len(n) // 2 # 不包含中间位置的坐标 ans = [] # 计算第一种可能的答案(直接翻转后半部分) if n != n[::-1]: ans.append(int(n[:idx_1] + n[:idx_2][::-1])) # 计算第二种可能的答案(前半部分加1后翻转后半部分) temp = str(int(n[:idx_1]) + 1) ans.append(int(temp + temp[:idx_2][::-1])) # 计算第三种可能的答案(前半部分减1后翻转后半部分) if n == "1" + "0" * (len(n) - 1) or n == "1" + "0" * (len(n) - 2) + "1": # 处理10、100等特殊情况 ans.append(int("9" * (len(n) - 1))) else: temp = str(int(n[:idx_1]) - 1) ans.append(int(temp + temp[:idx_2][::-1])) # 选择其中差值最小的答案 n = int(n) return str(sorted(ans, key=lambda i: (abs(i - n), i))[0])
转载地址:https://dataartist.blog.csdn.net/article/details/108048486 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月11日 07时25分27秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
分布式网关(GateWay)
2019-04-30
网关配置全局跨域请求(CorsWebFilter)
2019-04-30
分布式缓存(SpringCache)
2019-04-30
压力测试(Jmeter)
2019-04-30
线程的简单使用
2019-04-30
线程异步编排串行(CompletableFuture)
2019-04-30
线程异步编排并行(CompletableFuture)
2019-04-30
分布式缓存配置(SpringCache)
2019-04-30
Mysql实现主从复制
2019-04-30
《如何搭建小微企业风控模型》第七节 准入规则节选
2019-04-30
《如何搭建小微企业风控模型》第八节 反欺诈策略 节选
2019-04-30
《如何搭建小微企业风控模型》第九节 单变量分析(上)节选
2019-04-30
《如何搭建小微企业风控模型》第十节 单变量分析(下)节选
2019-04-30
《如何搭建小微企业风控模型》第十一节 逻辑回归与评分卡 节选
2019-04-30
《如何搭建小微企业风控模型》第十二节 模型检验 节选
2019-04-30
【题解】AcWing 117.占卜DIY
2019-04-30
数据传输-json的存与读 [laravel]
2019-04-30
vuecli3项目怎么修改title[动态改变]
2019-04-30
使用mybatis操作MySQL中的数据库表1---读取数据
2019-04-30
使用mybatis操作MySQL中的数据库表2---插入数据 以及开启日志
2019-04-30