Description
给一个N位的正整数,该数不包含前导0,先让你调整其中每个数字的位置,得到另一个n位的数,并且使得这个数越小越好,而且这个数不能包含前导0。比如543210可以变成102345,而12345保持不变才是最优结果。
Input
第一行一个整数T(T<=100),表示有T组数据。
每组数据先输入一行一个整数N(1<=N<=100),表示位数,接下来一行输入一个N位的不包含前导0的正整数。
Output
每组数据对应一行输出,即调整数字位置后能得到的最小的不包含前导0的数。
Sample Input
Sample Output
102345
123
123
AC代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std; //c++头文件;
int main ()
{
int t;
scanf("%d",&t);
while (t--)
{
int n,i,j;
char a[101];
scanf("%d%s",&n,a); //数字的排序(使用字符数组);
sort (a,a+n); //c++中sort排序;
if(a[0]=='0') //0特殊情况,优先考虑;
{
for(i=1; i<n; i++)
if(a[i]!='0') //0特殊情况,特殊考虑;
{
a[0]=a[i];
a[i]='0'; //不改变顺序,单独调换;
break; //跳出循环;
}
}
printf("%s",a); //输出字符串;
printf("\n");
}
return 0;
}
总结:数字排序问题:
1.数字也是字符,分情况使用字符数组和数组;
2.排序问题,c++sort排序优先考虑;
3.字符数组的使用;