月神拿到一个新的数据集,其中每个样本都是一个字符串,样本的的后六位是纯数字,月神需要将所有样本的后六位数字提出来,转换成数字,并排序输出。
注意:这里的排序并不是针对每个字符串的后六位,而是需要按数字大小顺序输出所有样本的后六位数字。
月神要实现这样一个很简单的功能确没有时间,作为好朋友的你,一定能解决月神的烦恼,对吧。
数据范围:字符串长度满足 ,每组测试中包含 个字符串
每个测试用例的第一行是一个正整数 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; }