1038. Recover the Smallest Number (30)

在比较两个字符串大小的时候,直接将字符串连接起来比较即可。

#define  _CRT_SECURE_NO_WARNINGS 

#include<string>
#include<string.h>
#include<vector>
#include<map>
#include<stack>
#include<iostream> 
#include<algorithm>
#include<stdio.h> 
using namespace std;
struct Number
{
char num[9];
};
bool cmp(Number a, Number b)

string s1(a.num), s2(b.num);
s1 += b.num;
s2 += a.num;
return s1 < s2;
//int i = 0;
//for (; a.num[i] && b.num[i]; i++)
//{
// if (a.num[i] != b.num[i])
// return a.num[i] < b.num[i];
//}
//if (a.num[i])
// return a.num[i] < b.num[0];
//if (b.num[i])
// return a.num[0] < b.num[i];
//return false;
}
bool EqlZero(char *a)

for (int i = 0; a[i]; i++)
{
if (a[i] != '0')
return false;
}
return true;
}
int main()

int N;
cin >> N;
Number *num = new Number[N];
for (int i = 0; i < N; i++)
scanf("%s",num[i].num);


sort(num,num+N,cmp);
int i = 0;
while (EqlZero(num[i].num) && i<N)
{
i++;

if (i < N)
{
int j = 0;
while (num[i].num[j])
if (num[i].num[j] == '0')
j++;
else
break;
while (num[i].num[j])
{
printf("%c", num[i].num[j]);
j++;
}
for (i =i+1; i < N; i++)
printf("%s", num[i].num);
}
else
cout << "0\n"; 
return 0;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值