[C/C++]字符串排序 - 2019校招编程刷题
参考链接
题目描述
月神拿到一个新的数据集,其中每个样本都是一个字符串(长度小于100),样本的的后六位是纯数字,月神需要将所有样本的后六位数字提出来,转换成数字,并排序输出。
月神要实现这样一个很简单的功能确没有时间,作为好朋友的你,一定能解决月神的烦恼,对吧。
输入描述
每个测试用例的第一行是一个正整数M(1<=M<=100),表示数据集的样本数目
接下来输入M行,每行是数据集的一个样本,每个样本均是字符串,且后六位是数字字符。
输出描述
对每个数据集,输出所有样本的后六位构成的数字排序后的结果(每行输出一个样本的结果)
输入例子1:
4
abc123455
boyxx213456
cba312456
cdwxa654321
输出例子1:
123455
213456
312456
654321
思路:
- 题目其实很简单,对每一个输入的字符串,截取最后六位数字,然后需要对输入的字符串数字进行升序排序!!!
- 由于题目举例的输入输入结果,本身就是排好序的,导致我一直不知道我的错误在哪(因为我只是简单的输出后六位数字)。
- 本题用到了两个函数需要简单提一下:
- sort(数组名,数组名+元素个数),需要引入
#include <algorithm>
这个包。作用:对数字数组进行升序排序。 - stringstream ss ,需要引入
#include<sstream>
这个包。作用是:把string数字转换成int类型数字
stringstream ss;
ss << p[i];
ss >> num[i];
Just show my code
代码(c++/c)
#include<iostream>
#include<string.h>
#include<sstream>
#include <algorithm>
using namespace std;
int main(){
int n; // 字符串的个数
cin>>n;
string *p = new string[n];
int *num = new int[n];
for(int i = 0 ;i < n ;i++){
cin >> p[i];
p[i] = p[i].substr(p[i].length()-6,p[i].length()-1);
stringstream ss;
ss << p[i];
ss >> num[i];
}
sort(num,num + n);
for(int i = 0 ; i<n; i++){
cout<<num[i]<<endl;
}
return 0;
}
如果我的文章能帮你节约20秒,就请你为我的文章点个赞吧!