题目来源
题目描述
[“dig1 8 1 5 1”,“let1 art zero can”,“dig2 3 6”,“let2 own kit dig”,“let3 art zero”]
题目解析
注意,不能使用sort,因为sort内部使用的是快排,不稳定排序。而stable_sort内部使用的是归并排序,所以是稳定的
class Solution {
public:
vector<string> reorderLogFiles(vector<string>& logs) {
stable_sort(logs.begin(), logs.end(), [](const string& a, const string& b)
{
int p1 = a.find(' ');
int p2 = b.find(' ');
bool f1 = isalpha(a[p1 + 1]);
bool f2 = isalpha(b[p2 + 1]);
if(f1 && !f2)
{
return true;
}
else if (f1 && f2)
{
return pair{a.substr(p1), a.substr(0, p1)} < pair{b.substr(p2), b.substr(0, p2)};
}
return false;
});
return logs;
}
};
substr有2种用法:
假设:string s = “0123456789”;
string sub1 = s.substr(5)
; //只有一个数字5表示从下标为5开始一直到结尾:sub1 = “56789”string sub2 = s.substr(5, 3)
; //从下标为5开始截取长度为3位:sub2 = “567”