Newb程序员在这里,我最熟悉Python,但也学习C和Java,所以3中的任何一个都可以。
我所拥有的是一串字母,说:查找所有可能的字符串变体
ABXDEYGH
但是说,
X可以是M和N
Y是可能的是P和Q.
在这个例子中,我想要basic盟友打印这串字母的所有可能的变化。
像:
ABMDEPGH
ABNDEPGH
ABMDEQGH
ABNDEQGH
任何帮助,将不胜感激。在此先感谢
Newb程序员在这里,我最熟悉Python,但也学习C和Java,所以3中的任何一个都可以。
我所拥有的是一串字母,说:查找所有可能的字符串变体
ABXDEYGH
但是说,
X可以是M和N
Y是可能的是P和Q.
在这个例子中,我想要basic盟友打印这串字母的所有可能的变化。
像:
ABMDEPGH
ABNDEPGH
ABMDEQGH
ABNDEQGH
任何帮助,将不胜感激。在此先感谢
这归结为一个简单的排列问题。你关心的是可以改变的文本部分;变量。剩下的可以被忽略,直到你想显示它。
所以你的问题可以更简单地说明:从集X
和另一个项目集Y
1项目可能的所有可能的排列?这被称为交叉产品,有时也简称为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。
为什么不写你的两个循环。一个用X代替所有可能的字符,一个用Y代替。
foreach(char c in charSet1){
// replaces X
foreach(char ch in charSet2){
// replace Y
}
}
[计算一系列的所有组合]的可能重复(http://stackoverflow.com/questions/759259/calculate-all-combinations-of-a-series) –