L2-2 你究竟有几个好妹妹
输入样例:
例如:
hmm
10
Zoehmm F 28 2001.01.01
hmmBeith F 18 2010.10.21
Zack M 35 1999.09.18
hmmAdam F 21 2010.10.21
Beithhmm F 21 2010.10.21
Chelse F 45 2005.12.03
DaisyHMM F 30 2008.08.05
Eston M 18 2015.03.04
hmmFrany F 8 2018.07.15
JackHM F 7 2017.09.11
输出样例:
输出:
6
Adam 21 2010.10.21
Beith 18 2010.10.21
Beith 21 2010.10.21
Daisy 30 2008.08.05
Frany 8 2018.07.15
Zoe 28 2001.01.01
参考代码:
#include<vector>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1e5 + 10;
struct HMM {
string name;
int age;
string date;
};
int n , age;
vector<HMM>hmm;
string name , sex , date , flag;
string toLower(string s) {
for(int i = 0 ; i < s.size() ; i++)
s[i] = tolower(s[i]);
return s;
}
bool isHmm(string &name) {
string tname = toLower(name);
int index = tname.find(flag);
if(index == -1)
return false;
if(index == 0)
name = name.substr(flag.size());
else
name = name.substr(0 , name.size() - flag.size());
return true;
}
bool cmp(HMM a , HMM b) {
if(a.name != b.name)
return a.name < b.name;
if(a.age != b.age)
return a.age < b.age;
return a.date < b.date;
}
int main() {
cin>>flag>>n;
flag = toLower(flag);
while(n--) {
cin>>name>>sex>>age>>date;
if(sex == "F" && isHmm(name))
hmm.push_back({name , age , date});
}
sort(hmm.begin() , hmm.end() , cmp);
cout<<hmm.size()<<endl;
for(int i = 0 ; i < hmm.size() ; i++)
cout<<hmm[i].name<<" "<<hmm[i].age<<" "<<hmm[i].date<<endl;
return 0;
}
本文来自博客园,作者:Coder-Jiang,转载请注明原文链接:https://www.cnblogs.com/coderjiang/p/18118081