传入一个字符串参数 获取这个字符串内所有字符的 不同排列情况

public class FullArrange
{

public static List<string> GetArrangeResult(string str)
{
str = str.Trim();
if (string.IsNullOrEmpty(str))
{
return new List<string>();
}
else if (str.Length == 1)
{
return new List<string> { str };
}
else if (str.Length == 2)
{
char[] ca = str.ToArray();
return new List<string>() { ca[0].ToString() + ca[1].ToString(), ca[1].ToString() + ca[0].ToString() };
}
else
{
char[] array = str.ToCharArray();
List<string> temp = GetArrangeString(array[0].ToString(), array[1]);
for (int i = 2; i < array.Length; i++)
{
int count = temp.Count;
for (int j = 0; j < count; j++)
{
temp.AddRange(GetArrangeString(temp[j], array[i]));
temp.Remove(temp[j]);
j--;
count--;
}
}
return temp;
}
}

private static List<string> GetArrangeString(string parent, char child)
{
List<string> temp = new List<string>();
for (int i = 0; i <= parent.Length; i++)
{
temp.Add(parent.Insert(i, child.ToString()));
}
return temp;
}
}

 

posted @ 2013-08-10 15:14  JasonGu0  阅读(287)  评论(0编辑  收藏  举报