algorithm - 如何编写一个遍历所有小写到数字映射的函数?
问题描述
我需要编写一个函数,将 26 个小写字母字符中的每一个映射到 [0, 9] 中的单个数字。我需要这个函数来生成所有可能的组合(其中 26^10 个)。我知道一种用递归编写它的方法,但我想在没有递归的情况下这样做,而且我不确定算法应该是什么样子。
有人可以为此提供一种无需递归的算法吗?
解决方案
当然,这里有一些代码打印每个函数的表示:
for idx in range(10 ** 26):
print(f"function {idx}")
for letter in range(ord('a'), ord('z') + 1):
# f(letter) = 1 + (idx % 10)
print(f"\tf({chr(letter)}) = {1 + (idx % 10)}")
idx //= 10
你会注意到这段代码需要非常非常长的时间来运行。'a' 映射到什么有 10 个选项,'b' 映射到什么有 10 个选项,等等,所以有 10^26 个可能的映射。一般来说,一台计算机在一秒钟内只会做大约 10^9 次操作,所以用这些映射做任何事情都不容易处理。
推荐阅读
- c++ - 如何从字符串中删除元音,并将结果存储在另一个字符串中
- google-sheets - 尝试使用 ImportXML 但收到“预期 2 个参数但得到 3 个”错误。我该怎么做?
- ruby - “as”的Ruby未定义方法“每个”:字符串(NoMethodError)
- html - 仅选中 jquery 类中的复选框
- firebase - 如何使用 FirebaseAnimatedList 和 SplashScreen?
- flutter - 如何在 Dart 中声明匿名函数的类型?
- python - 令人困惑的python:空列表作为类初始化中的可选kwarg
- swift - Swift 生成 15 个随机数字
- pandas - 用变量命名 pandas 列
- amazon-web-services - 我的子域 ssl 证书与我的主域的 ssl 证书冲突