专栏文章
题解:P14357 [CSP-J 2025] 拼数 / number(民间数据)
P14357题解参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @minfrq5m
- 此快照首次捕获于
- 2025/12/02 01:41 3 个月前
- 此快照最后确认于
- 2025/12/02 01:41 3 个月前
思路
首先,在字符串中提取所有数字字符,存放在新字符串中,再将字符串进行降序排列,即可输出结果。
代码 1
CPP#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1000005;
char a[MAXN];
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
string s;
cin>>s;
int q=0;
//提取数字字符
for(int i=0;i<s.length()&&i<MAXN-1;i++){
if(s[i]>='0'&&s[i]<='9'){
a[q++]=s[i];
}
}
// 对数字字符进行降序排序
sort(a,a + q,greater<char>());
// 输出结果
for(int i=0;i<q;i++){
cout<<a[i];
}
return 0;
}
代码简短优化思路
将数字判断用 isdigit 函数代替
for 循环直接用 c 成为 s 中的每个字符
输出直接用字符串,避免循环。
代码 2
CPP#include<bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
string s;
cin>>s;
string digits="";
// 提取所有数字字符
for(char c:s){
if(isdigit(c)){
digits+=c;
}
}
// 对数字字符进行降序排序
sort(digits.begin(), digits.end(), greater<char>());
cout<<digits;
return 0;
}
如有问题欢迎提出,谢谢!
相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...