从给定的字母生成所有长度为 n 的字符串 [关闭]

Posted

技术标签:

【中文标题】从给定的字母生成所有长度为 n 的字符串 [关闭]【英文标题】:Generate all strings of length n from given letters [closed] 【发布时间】:2020-03-29 12:28:56 【问题描述】:

给定字母 a,bn=3 我想得到以下字符串: aaa,aab,aba,abb,bbb,bba,bab,baa.

也就是说,我需要从给定的字母 'a' 和 'b' 生成所有长度为 n 的字符串

提前致谢!

【问题讨论】:

那是因为 3**20 这个数字太大了。你的记忆无法保存这样的列表。 你试过这个combinations吗? 也许这会有所帮助:>>> from itertools import permutations>>> perms = [''.join(p) for p in permutations('stack')] 请问您为什么要这样做? “不工作”不是一个足够精确的错误描述,我们无法帮助您。 什么不起作用? 如何不起作用?你的代码有什么问题?您收到错误消息吗?错误信息是什么?你得到的结果不是你期望的结果吗?你期望什么结果,为什么,你得到的结果是什么,两者有什么不同?您正在观察的行为不是期望的行为吗?期望的行为是什么,为什么,观察到的行为是什么,它们有何不同? 【参考方案1】:

该调用在理论上有效,但可能的字符串数量随着n 呈指数增长。对于包含 3 个字母和长度为 20 的字符串的池,这将使 3**20 = 3,486,784,401 ~ 3,5bn。不过,您可以制作一个惰性生成器:

all_ = map(''.join, product('RPS', repeat=20))

>>> next(all_)
'RRRRRRRRRRRRRRRRRRRR'
>>> next(all_)
'RRRRRRRRRRRRRRRRRRRP'
>>> next(all_)
'RRRRRRRRRRRRRRRRRRRS'
>>> next(all_)
'RRRRRRRRRRRRRRRRRRPR'
>>> next(all_)
'RRRRRRRRRRRRRRRRRRPP'

【讨论】:

以上是关于从给定的字母生成所有长度为 n 的字符串 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

2023-01-06:给定一个只由小写字母组成的字符串str,长度为N, 给定一个只由01组成的数组arr,长度为N, arr[i] == 0表示str中i位置的字符不许修改, arr[i] ==

dtoj1721. 字符串生成器 ( strgen )

从给定的单词列表中生成具有“N”长度的所有可能组合(寻找不重复)

2022-02-11:单词缩写。 给定一个由n个不重复非空字符串组成的数组,你需要按照以下规则为每个单词生成最小的缩写。 初始缩写由起始字母+省略字母的数量+结尾字母组成。 若存在冲突,亦即多于一个单

含有重复字符的字符串排列组合

2021-11-18:给定一个长度len,表示一共有几位。所有字符都是小写(a~z),可以生成长度为1,长度为2,长度为3...长度为len的所有字符串。如果把所有字符串根据字典序排序,每个字符串都有