【问题标题】:C# Algorithm that Re-arranges Chars in a String重新排列字符串中的字符的 C# 算法
【发布时间】:2011-04-15 08:22:44
【问题描述】:
我想要一个 C# 算法,它可以在长度动态的字符串中重新排列字符。找不到一个,我知道肯定有一个。
算法必须重新排列元素以在所有可能的组合中形成新的字符串。
例如,“cat”会产生以下内容:
cat cta tca tac act atc
【问题讨论】:
标签:
c#
algorithm
string
permutation
【解决方案3】:
static void Main(string[] args)
{
Console.WriteLine("Enter String:");
string inputString = Console.ReadLine();
Console.WriteLine();
List<string> lstAnagrams = new List<string>();
int numAnagram = 1;
permute(inputString.ToCharArray(), 0, inputString.Length - 1, lstAnagrams);
foreach(string anagram in lstAnagrams)
{
Console.WriteLine(numAnagram.ToString() + " " + anagram);
numAnagram++;
}
Console.ReadKey();
}
static void permute(char[] word, int start, int end, List<string> lstAnagrams)
{
if (start == end)
lstAnagrams.Add(string.Join("", word));
else
{
for (int position = start; position <= end; position++)
{
swap(ref word[start], ref word[position]);
permute(word, start + 1, end,lstAnagrams);
swap(ref word[start], ref word[position]);
}
}
}
static void swap(ref char a, ref char b)
{
char tmp;
tmp = a;
a = b;
b = tmp;
}