A17436. 拼数(number)
填空题
困难
知识点
题目描述
拼数(number)
题目描述
小 R 正在学习字符串处理。小 X 给了小 R 一个字符串 s,其中 s 仅包含小写英文字母及数字,且包含至少一个 1~9 中的数字。小 X 希望小 R 使用 s 中的任意多个数字,按任意顺序拼成一个正整数。注意:小 R 可以选择 s 中相同的数字,但每个数字只能使用一次。例如,若 s 为 1a01b,则小 R 可以同时选择第 1、3、4 个字符,分别为 1、0、1,拼成正整数 101 或 110;但小 R 不能拼成正整数 111,因为 s 仅包含两个数字 1。
小 R 想知道,在他所有能拼成的正整数中,最大的是多少。你需要帮助小 R 求出他能拼成的正整数的最大值。
输入格式
从文件 number.in 中读入数据。
输入的第一行包含一个字符串s,表示小 X 给小 R 的字符串。
输出格式
输出到文件 number.out 中。
输出一行一个正整数,表示小 R 能拼成的正整数的最大值。
样例输入 1
5样例输出 1
5样例解释 1
s 仅包含一个数字 5,因此小 R 仅能拼成正整数 5。
样例输入 2
290es1q0样例输出 2
92100样例解释2
s 包含数字 2, 9, 0, 1, 0。可以证明,小 R 拼成的正整数的最大值为 92100。
数据范围
设 |s| 为字符串 s 的长度。对于所有测试数据,保证:
1 ≤ |s| ≤ 106 ;
s 仅包含小写英文字母及数字,且包含至少一个 1 ∼ 9 中的数字。
参考答案
#include <bits/stdc++.h>
using namespace std;
//循环字符串,将所有数字插入vector
//将vector排序
//倒序输出
string s;
vector<char> v;
int main() {
cin >> s;
for (char i : s) {
if (i >= '0' && i <= '9') {
v.push_back(i);
}
}
sort(v.begin(), v.end(), greater<int>());
for (char i : v) {
cout << i;
}
return 0;
}
上一题
下一题