2012-12-06 123 views
-2

如何使用前缀字排列2个字母的排列?带前缀字的C#字母排列

这样的:

NAMEaa NAMEab NAMEac NAMEad NAMEae NAMEaf ... ...

+0

http://mattgemmell.com/2008/12/08/what-have-you-tried/ –

+0

难道你不能简单地将两个字母的所有排列组合在一起,并在“NAME”之前加上前缀吗? –

+0

所有字母,包括阿拉伯文,中文等....? –

回答

1

可以轻松获得想要的结果与LINQ:

string prefix = "NAME"; 
string alphabet = "abcdefghijklmnopqrstuvwxyz"; 

IEnumerable<string> words = from x in alphabet 
          from y in alphabet 
          select prefix + x + y; 
0

创建所有字母和循环数组超过它的指标的两倍。

0

这不是排列,即组合。

将要在字符串中的字符:

string chars = "abcdefghijklmnopqrstuvwxyz"; 

可能的组合数为:

int combinations = chars.Length * chars.Length; 

为了得到一个特定的组合(0到组合-1):

string str = 
    "NAME" + 
    chars.Substring(combination/chars.Length, 1) + 
    chars.Substring(combination % chars.Length, 1); 

要通过他们获得所有组合您只需循环:

string chars = "abcdefghijklmnopqrstuvwxyz"; 
int combinations = chars.Length * chars.Length; 
List<string> result = new List<string>(); 
for (int i = 0; i < combinations; i++) { 
    result.Add(
    "NAME" + 
    chars.Substring(combination/chars.Length, 1) + 
    chars.Substring(combination % chars.Length, 1); 
); 
} 
+0

考虑到他给出的例子,他没有足够长的时间继续这个序列来确定它是否是组合或排列(他们开始相同),并且因为他说*排列,所以假设这是合乎逻辑的他想要什么(没有相反的证据)。另外请注意,你已经实现了一个解决方案,返回排列,而不是组合,所以我想你只是混淆了两者;) – Servy

+0

@Servy:不,对不起,但你完全是那里的标志。排列正在重新排列,因此两个字符(例如'a'和'b')的可能排列是'ab'和'ba'。这不是严格的组合(因为它不会包含重复的字符),但与排列更接近。 – Guffa

2
for (char c1 = 'a'; c1 <= 'z'; c1++) 
{ 
    for (char c2 = 'a'; c2 <= 'z'; c2++) 
    { 
     Console.WriteLine("NAME" + c1 + c2); 
    } 
} 

顺便说一句,这些都不是permutations

+0

它是重复的排列(而不是重复排列),但这仍然是一种排列方式。 – Servy