【问题标题】:Find all possible variations of a string of letters找出一串字母的所有可能变体
【发布时间】:2011-11-01 21:30:35
【问题描述】:
这里的新手程序员,我最熟悉 Python,但也学习 C 和 Java,所以 3 中的任何一个都可以。
我有的是一串字母,比如:
ABXDEYGH
但是说,
X 可能是 M 和 N。
Y 可能是 P 和 Q。
在这个例子中,我基本上想打印这串字母的所有可能变体。
喜欢:
ABMDEPGH
ABNDEPGH
ABMDEQGH
ABNDEQGH
任何帮助将不胜感激。提前致谢
【问题讨论】:
标签:
string
combinations
combinatorics
【解决方案1】:
这归结为一个简单的排列问题。你关心的是文本中可以改变的部分;变量。其余的可以忽略,直到你想显示它。
所以你的问题可以更简单地说:集合X 中的一项和集合Y 中的另一项的所有可能排列是什么?这称为交叉产品,有时也简称为product。
这是一个可能的 Python 解决方案:
import itertools
x = set(['M', 'N'])
y = set(['P', 'Q'])
for items in itertools.product(x, y)
print 'AB{0}DE{1}GH'.format(*items)
注意print ''.format() 命令使用here 描述的“解包参数”表示法。
【解决方案2】:
你为什么不写两个循环。一个用 X 替换所有可能的字符,一个用 Y 替换。
foreach(char c in charSet1){
// replaces X
foreach(char ch in charSet2){
// replace Y
}
}