月神拿到一个新的数据集,其中每个样本都是一个字符串,样本的的后六位是纯数字,月神需要将所有样本的后六位数字提出来,转换成数字,并排序输出。
注意:这里的排序并不是针对每个字符串的后六位,而是需要按数字大小顺序输出所有样本的后六位数字。
月神要实现这样一个很简单的功能确没有时间,作为好朋友的你,一定能解决月神的烦恼,对吧。
数据范围:字符串长度满足
,每组测试中包含
个字符串
每个测试用例的第一行是一个正整数 M ,表示数据集的样本数目
接下来输入 M 行,每行是数据集的一个样本,每个样本均是字符串,且后六位是数字字符。
对每个数据集,输出所有样本的后六位构成的数字排序后的结果(每行输出一个样本的结果)
4 abc123455 cba312456 boyxx213456 cdwxa654321
123455 213456 312456 654321
#include <bits/stdc++.h>
using namespace std;
int main()
{
int m;
string s[101];
while(cin>>m)
{
int num[m];
for(int i=0;i<m;i++)
{
cin>>s[i];
string str = s[i].substr(s[i].size() - 6, s[i].size() - 1);
num[i]=stoi(str);
}
sort(num,num+m);
for(int i=0;i<m;i++)
cout<<num[i]<<endl;
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <string.h>
#define not !
// function declaration
int str_len(const char* s);
char* sub_str(const char* s, const int start, const int len);
void printNumbers(int* numbers, int numbersSize);
// generic bubble sort algorithm
void bubble_sort(void* __base, const size_t __nmemb, const size_t __size, int (*__comp) (const void*, const void*));
void swap(void* __a, void* __b, const size_t __size);
int compare_int(const void* a, const void* b) {
return *(int*) a - *(int*) b;
}
int main(const int argc, const char** argv) {
int m;
fscanf(stdin, "%d", &m);
int nums[m], numsSize = 0;
char input[100];
while (m--) {
scanf("%s", input);
*(nums + numsSize++) = atoi(sub_str(input, str_len(input) - 6, 9999));
}
bubble_sort(nums, numsSize, sizeof(int), compare_int);
printNumbers(nums, numsSize);
return 0;
}
int str_len(const char* s) {
assert(s != NULL);
if (!*s) return 0;
const char* p = s;
while (*++p);
return p - s;
}
// 非常的完美
char* sub_str(const char* s, const int start, const int len) {
assert(s != NULL);
const int l = str_len(s);
if (start < 0 || start >= l) return s;
// 每一个字节都要考虑到!
char* ss = (char*) malloc((l - start + 1) * sizeof(char)); // ss == sub string
if (!ss) return s;
char *p = s + start, *q = ss;
int i = 0; // len 的长度有可能远远大于str start后的实际长度。函式要有一定的容错性!
while (*p && i++ < len) *q++ = *p++;
*q = '\0';
return ss;
}
void printNumbers(int* numbers, int numbersSize) {
int i;
for (i = 0; i < numbersSize; ++i)
fprintf(stdout, "%d\n", *(numbers + i));
}
// 优化版的冒泡排序
void bubble_sort(void* __base, const size_t __nmemb, const size_t __size, int (*__comp) (const void*, const void*))
{
int t, i, exchange;
for (t = 0; t < __nmemb - 1; ++t) {
exchange = 0;
for (i = 0; i < __nmemb - 1 - t; ++i) {
if ( __comp((char*) __base + (i * __size), (char*) __base + ((i + 1) * __size)) > 0) {
swap((char*) __base + (i * __size), (char*) __base + ((i + 1) * __size), __size);
exchange = 1;
}
}
if (not exchange) break;
}
}
void swap(void* __a, void* __b, const size_t __size) {
int i;
for (i = 0; i < __size; ++i) {
*((char*) __a + i) ^= *((char*) __b + i);
*((char*) __b + i) ^= *((char*) __a + i);
*((char*) __a + i) ^= *((char*) __b + i);
}
} import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String strN;
while((strN = br.readLine()) != null){
int n = Integer.parseInt(strN);
String[] arr = new String[n];
String content;
for(int i = 0; i < n; i++){
content = br.readLine().trim();
arr[i] = content.substring(content.length() - 6);
}
// 直接进行字符串排序
Arrays.sort(arr);
for(int i = 0; i < n; i++)
System.out.println(arr[i]);
}
}
} #include<bits/stdc++.h>
using namespace std;
int main(){
int m;
while(cin>>m){
char** ch=new char*[m];
int *rec=new int[m];
for(int i=0;i<m;i++){
ch[i]=new char[100];
cin>>ch[i];
int len=strlen(ch[i]),total=0;
for(int j=len-6;j<len;j++)
total+=pow(10,len-1-j)*(ch[i][j]-'0');
rec[i]=total;
}
sort(rec,rec+m);
for(int i=0;i<m;i++)
cout<<rec[i]<<endl;
}
return 0;
} #include <string>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int m;
cin >> m;
vector<string> v;
while(m--)
{
string str;
cin >> str;
string temp = "";
temp = str.substr(str.size()-6);
v.push_back(temp);
}
sort(v.begin(),v.end());
for(int i =0;i<v.size();i++)
cout << v[i] << endl;
return 0;
} #include <bits/stdc++.h>
using namespace std;
int main(){
int n;
set<int,less<int>> min;
vector<string> vstr;
cin>>n;
vstr.resize(n);
for(int i=0;i<n;i++){
cin>>vstr[i];
min.insert(stoi(vstr[i].substr(vstr[i].size()-6,6)));
}
for(int i:min)
cout<<i<<endl;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main(void) {
string a[101];
int m = 0;
cin >> m;
for (int i = 0; i < m; i++) {
cin >> a[i];
}
multiset<string> mset;
for (int i = 0; i < m; i++) {
mset.insert(a[i].substr(a[i].length() - 6));
}
multiset<string>::iterator iter;
for (iter = mset.begin(); iter != mset.end(); iter++) {
cout << *iter << endl;
}
return 0;
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
/**
* 每次把后6位数字切出来丢进数组,之后排序
*/
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bf.readLine());
int[] ans = new int[n];
for (int i = 0; i < n; i++) {
String s = bf.readLine();
ans[i] = Integer.parseInt(s.substring(s.length()-6,s.length()));
}
Arrays.sort(ans);
for (int i = 0; i < ans.length; i++) {
System.out.println(ans[i]);
}
}
}
/*
取子串。
利用Integer的parseInt方法转化成整型。
排序。
*/
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int M = in.nextInt();
int[] arr = new int[M];
for (int i = 0; i < M; i++) {
String s = in.next();
int len = s.length();
String lasts = s.substring(len - 6, len);
arr[i] = Integer.parseInt(lasts);
}
Arrays.sort(arr);
for (int i : arr) {
System.out.println(i);
}
}
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
string s;
int n;
cin >> n;
vector<int> v(n, 0);
while(n--){
cin >> s;
for(int i = s.length() - 6; i < s.length(); i++){
v[n] *= 10;
v[n] += s[i] - '0';
}
}
sort(v.begin(), v.end());
for(int i : v)
cout << i << endl;
return 0;
}