python - 查找多个相同数字的立即数的优化或最佳方法
问题描述
所以我有一个像 123 这样的数字,具有相同数字的立即数是 132。考虑另一个例子,数字是 1238,下一个立即数是 1283。所以对于这个逻辑,我已经实现了一个代码
def findnext(n):
ns=list(map(int,str(n)))
for i in reversed(range(len(ns))):
if i == 0: return n
if ns[i] > ns[i-1] :
break
left,right=ns[:i],ns[i:]
for k in reversed(range(len(right))):
if right[k]>left[-1]:
right[k],left[-1]=left[-1],right[k]
break
return int("".join(map(str,(left+sorted(right)))))
n=int(input())
print(findnext(n))
我需要一个在不使用 itertools 的情况下更优化或更精简代码的逻辑。请帮我!!提前致谢。
解决方案
这不是一个 Python 问题,而是一个逻辑问题。
我正确理解您的问题的方式是您需要使用相同的数字并找到最接近的数字。从逻辑上讲,这意味着大多数时候您想要切换最后两位数字。但是,如果我这样做最接近你的例子,距离1238
不是`1328-1238=90,还是我错过了某种规则?距离可以是双向的还是只有一个?1283
1283-1238=45
当我确定规则时,我(和其他人)可能会提供更多帮助。
推荐阅读
- c++ - cpp中的类定义但遇到错误:不完整类型的无效使用
- blazor - MatBlazor - 嵌入式资源文件不输出
- xamarin.forms - Xamarin 与 aot 和 mono 形成交互
- php - php多数组分组和最大值每组和每个数组的总和
- intellij-idea - 无法下载所有 Maven 依赖项
- excel - VBA Sumifs MultiSelect Item ListboxList
- javascript - 使用 JavaScript,如何在最后移动更新字段的同时基于前一个对象创建一个新对象?
- python - 如何在远程 linux 服务器上运行 python 代码?
- swift - SwiftUI - 从 Swift 类启动的可观察对象不会更新 ContentView() 上的 @ObservedObject
- javascript - 在 Javascript 中分号后的新行上更正光标缩进