LeetCode题解(0564):寻找与当前数差值最小的回文数(Python)
发布日期:2021-06-29 19:57:59
浏览次数:3
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月09日 01时09分21秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
XCode编译器介绍
2019-04-30
X86汇编语言从实模式到保护模式14:用户程序编程接口及其实现
2019-04-30
SystemC自带example的simple_perf研习
2019-04-30
SystemC自带example的rsa研习
2019-04-30
Python实用小技巧
2019-04-30
美科学家研发BIC-TCP协议 速度是DSL六千倍
2019-04-30
AIDL使用注意
2019-04-30
SDL以及扩展库的交叉编译过程简介
2019-04-30
SDL arm linux平台交叉编译(好文章已测试)
2019-04-30
linux 常用查看设备命令
2019-04-30
Linux内核及文件系统配置编译 - 关于内核配置
2019-04-30
android应用前期开发之经验总结
2019-04-30
Linux 下zip包的压缩与解压
2019-04-30
Andoird SDK目录解析
2019-04-30
Google Guava官方教程(中文版)
2019-04-30
Guava教程
2019-04-30
The Book of QT4 翻译:1.2 布局,对象层级和内存管理
2019-04-30
麒麟信安UniKylin3.3安装配置pyqt5运行环境
2019-04-30
linux中python3 pip快速搭建pyqt5环境
2019-04-30
泛型程序设计
2019-04-30