hiho 第214周 Sorting Photo Files(排序)
Posted ehanla
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hiho 第214周 Sorting Photo Files(排序)相关的知识,希望对你有一定的参考价值。
1.自定义排序,两个字符串提取出全字符和全数字的子段,如果全字符的子段相等,比较得到的数字大小。
1 #include <set> 2 #include <map> 3 #include <queue> 4 #include <deque> 5 #include <stack> 6 #include <cmath> 7 #include <cstdio> 8 #include <vector> 9 #include <string> 10 #include <cstring> 11 #include <fstream> 12 #include <iostream> 13 #include <algorithm> 14 using namespace std; 15 16 #define eps 1e-8 17 #define PI acos(-1.0) 18 #define INF 0x3f3f3f3f 19 #define FAST_IO ios::sync_with_stdio(false) 20 const int N=123; 21 string s[N]; 22 23 bool cmp(string s1,string s2){ 24 int n1=s1.size(); 25 int n2=s2.size(); 26 string s11="",s22=""; 27 int num1=0,num2=0; 28 for(int i=0;i<n1;i++){ 29 if(s1[i]>=‘0‘&&s1[i]<=‘9‘){ 30 s11=s1.substr(0,i); 31 break; 32 } 33 } 34 for(int i=0;i<n1;i++){ 35 if(s1[i]>=‘0‘&&s1[i]<=‘9‘){ 36 num1=10*num1+(s1[i]-‘0‘); 37 } 38 } 39 for(int i=0;i<n2;i++){ 40 if(s2[i]>=‘0‘&&s2[i]<=‘9‘){ 41 s22=s2.substr(0,i); 42 break; 43 } 44 } 45 for(int i=0;i<n2;i++){ 46 if(s2[i]>=‘0‘&&s2[i]<=‘9‘){ 47 num2=10*num2+(s2[i]-‘0‘); 48 } 49 } 50 if(s11==s22){ 51 return num1<num2; 52 } 53 return s11<s22; 54 } 55 56 int main(){ 57 int n; 58 cin>>n; 59 for(int i=0;i<n;i++) cin>>s[i]; 60 sort(s,s+n,cmp); 61 for(int i=0;i<n;i++){ 62 if(i!=n-1) cout<<s[i]<<endl; 63 else cout<<s[i]; 64 } 65 return 0; 66 }
以上是关于hiho 第214周 Sorting Photo Files(排序)的主要内容,如果未能解决你的问题,请参考以下文章