题目
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
思路
这道题本质是一个排序题目,只不过排序的条件变成了将两个数组合起来再比较大小。所以这道题利用冒泡排序就能搞定,其他排序算法也ok。
代码
using System.Text;using System;class Solution{
public string PrintMinNumber(int[] numbers)
{
// write code here
if(numbers==null || numbers.Length==0)
{
return "";
}
StringBuilder sb = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
int k;
for(int i=numbers.Length-1;i>=0;i--)
{
for(int j=0;j<i;j++)
{
sb.Clear();
sb2.Clear();
sb.Append(numbers[j].ToString());
sb.Append(numbers[j+1].ToString());
sb2.Append(numbers[j+1].ToString());
sb2.Append(numbers[j].ToString());
if(sb.ToString().CompareTo(sb2.ToString())==1)//代表sb>sb2
{
k=numbers[j];
numbers[j]=numbers[j+1];
numbers[j+1]=k;
}
}
}
sb.Clear();
for(int j=0;j<numbers.Length;j++)
{
sb.Append(numbers[j].ToString());
}
return sb.ToString();
}}
文章来源:CSDN 糟糕点师
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69991606/viewspace-2745212/
,如需转载,请注明出处,否则将追究法律责任。