寻找全排列的下一个数

前言

题目:

给出一个正整数,找出这个正整数所以数字全排列的下一个数。
比如说12345.返回 12354.

12354 返回 12435

自己的解答

class Program
{
	public static int[] GetArrays(int num)
	{
		string len = num.ToString();
		int[] intarr = new int[len.Length];
		int index = 0;
		while (num != 0)
		{
		   int yu=num % 10;
			intarr[index] = yu;
			index++;
			num = num / 10;
		}
		return intarr;
	}

	public static int getMaxInt(int[] intarr)
	{
		var sortIndex = 0;
		var temp = 0;
		for (int i = 1; i < intarr.Length; i++)
		{
			if (intarr[i] < intarr[0])
			{
				sortIndex = i - 1;
				temp = intarr[0];
				intarr[0] = intarr[i];
				intarr[i] = temp;
				break;
			}
		}

		var hasSore = true;
		if (sortIndex - 1 >= 0)
		{
			for (int i = 0; i < sortIndex ; i++)
			{
				for (int j = 0; j < sortIndex- i; j++)
				{
					if (intarr[j] < intarr[j + 1])
					{
						temp = intarr[j + 1];
						intarr[j + 1] = intarr[j];
						intarr[j] = temp;
						hasSore = false;
					}
					if (hasSore)
					{
						break;
					}
				}
			}
		}
		int result = 0;
		for (int i = 0; i < intarr.Length; i++)
		{
			var tempdouble = Convert.ToDouble(i);
			result += Convert.ToInt32(intarr[i] * Math.Pow(10.0, tempdouble));
		}
		return result;
	}
	static void Main(string[] args)
	{
		Console.WriteLine(getMaxInt(GetArrays(12354)));
		Console.ReadKey();
	}
}
posted @ 2020-03-20 17:42  敖毛毛  阅读(224)  评论(0编辑  收藏  举报