【问题标题】: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 
       }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多