解题思路:
(1)一开始整体排序,结果一直报错
(2)最后采取这种笨一点的办法:分两个数组,一个排序,一个不排序
class Solution {
public:
vector<string> reorderLogFiles(vector<string>& logs) {
auto comp = [&](const string &a,const string &b) {
int index1 = a.find_first_of(' ');
string astr1 = a.substr(0,index1);
string astr2 = a.substr(index1+1);
int index2 = b.find_first_of(' ');
string bstr1 = b.substr(0,index2);
string bstr2 = b.substr(index2+1);
if(astr2<bstr2) return true;
else if(astr2>bstr2) return false;
else {
if(astr1<bstr1) return true;
else return false;
}
return true;
};
vector<string> v1,v2;
for(int i=0;i<logs.size();i++) {
int index = logs[i].find_first_of(' ');
string str1 = logs[i].substr(0,index);
string str2 = logs[i].substr(index+1);
if(str2[0]<='9' && str2[0]>='0') v1.push_back(logs[i]);
else v2.push_back(logs[i]);
}
sort(v2.begin(),v2.end(),comp);
for(int i=0;i<logs.size();i++) {
if(logs.size()-i<=v1.size()) logs[i] = v1[i-(logs.size()-v1.size())];
else logs[i] = v2[i];
}
return logs;
}
};