public
string
[] FindPermutations(
string
word)
{
if
(word.Length == 2)
{
char
[] _c = word.ToCharArray();
string
s =
new
string
(
new
char
[] { _c[1], _c[0] });
return
new
string
[]
{
word,
s
};
}
List<
string
> _result =
new
List<
string
>();
string
[] _subsetPermutations = FindPermutations(word.Substring(1));
char
_firstChar = word[0];
foreach
(
string
s
in
_subsetPermutations)
{
string
_temp = _firstChar.ToString() + s;
_result.Add(_temp);
char
[] _chars = _temp.ToCharArray();
for
(
int
i = 0; i < _temp.Length - 1; i++)
{
char
t = _chars[i];
_chars[i] = _chars[i + 1];
_chars[i + 1] = t;
string
s2 =
new
string
(_chars);
_result.Add(s2);
}
}
return
_result.ToArray();
}</
string
></
string
>