2012-12-06 72 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