PAT甲级_1038 Recover the Smallest Number (30 分)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44705116/article/details/102715215

题目大意:输入几个数字串的排列,输出它们排列所得最小的数。

使用cmp将数字进行排列;同时检测开头位是否为零,使用erase将0进行消除。

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

bool cmp(string a, string b) {
	return a + b < b + a;
}

string sb[10010];

int main() {
	int n;
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> sb[i];
	}
	sort(sb, sb + n, cmp);
	string s;
	for (int i = 0; i < n; i++) {
		s += sb[i];
	}
	while (s.length() != 0 && s[0] == '0') {
		s.erase(s.begin());
	}
	if (s.length() == 0)cout << 0;
	else {
		cout << s;
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_44705116/article/details/102715215