[C#版剑指offer]字符串的排列

题意为给定一个字符串的数组,要求将其中所有元素的排列可能都列出来,如“abc”的排列情况为abc,acb,bac,bca,cab,cba。

此题使用递归的方法解决。

[C#版剑指offer]字符串的排列_第1张图片

public static void ArrayArrangement(char[] array, int cur)
        {
            if (cur == array.Length - 1) Console.WriteLine(array);
            else
            {
               for(int i = cur; i < array.Length; i++)
                {
                    if (!isExit(array, cur, i))
                    {
                        swap(array, cur, i);
                        ArrayArrangement(array, cur + 1);
                        swap(array, i, cur);
                    }
                }
            }
        }
       public static void swap(char[] array,int cur,int i)
        {
            char temp;
            temp = array[cur];
            array[cur] = array[i];
            array[i] = temp;
        }
       public static Boolean isExit(char[] array,int cur,int i)
        {
            for (int k = cur; k < i; k++)
            {
                if (array[k] == array[i]) return true;
            }
            return false;
        } 
char[] s = { 'a', 'b', 'c' };
ArrayArrangement(s,0);

 结果如下:[C#版剑指offer]字符串的排列_第2张图片

 

你可能感兴趣的:(C#数据结构算法)