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 }
View Code

 

以上是关于hiho 第214周 Sorting Photo Files(排序)的主要内容,如果未能解决你的问题,请参考以下文章

hiho一下 第173周

hiho一下 第150周 -- Demo Day (DP)

hiho一下 第174周

hiho 第1周 最长回文子串(manacher)

hiho一下 第172周

hiho 第1周 最长回文子串